Python के साथ महत्वपूर्ण YouTube डेटा कै से स्क्रैप करें
AI द्वारा जनरेट किया गया सारांश:
YouTube सामग्री निर्माता को प्रत्येक वीडियो के प्रदर्शन का विश्लेषण करना होता है, जिसमें टिप्पणियों और अन्य श्रेणी या उपश्रेणी में आने वाली वीडियो सामग्री के साथ तुलना शामिल होती है।
सभी वीडियो को मैन्युअली देखना थकाऊ और कठिन हो सकता है। ऐसे मामलों में एक विशेष स्क्रिप्ट उपयोगी होती है। इस गाइड में, हम आपको दिखाएंगे कि YouTube को कैसे स्क्रैप करें और एक ऐसी स्क्रिप्ट कैसे बनाएं जो सामान्यतः मैन्युअली किए जाने वाले डेटा संग्रहण को स्वचालित कर सके।
Python के साथ YouTube डेटा स्क्रैप करने के लिए डेटा संरचना को समझना
इससे पहले कि हम जानें कि YouTube को कैसे स्क्रैप करना है, हमें उसकी संरचना को समझना होगा। इसमें इतनी सारी विशेषताएँ हैं जो उपयोगकर्ता गतिविधि और वीडियो सांख्यिकी से संबंधित अंतहीन डेटा प्रकारों का समर्थन करती हैं। प्लेटफ़ॉर्म के कुछ प्रमुख मापदंडों में वीडियो शीर्षक और विवरण, जोड़े गए टैग, दृश्य संख्या, लाइक और टिप्पणियाँ, साथ ही चैनल और प्लेलिस्ट जानकारी शामिल हैं। ये तत्व कंटेंट मार्केटर्स और क्रिएटर्स के लिए वीडियो प्रदर्शन का मूल्यांकन करने और कंटेंट रणनीति बनाने में महत्वपूर्ण भूमिका निभाते हैं।
YouTube Data API के माध्यम से, डेवलपर्स अधिकांश मेट्रिक्स को प्रोग्रामेटिक रूप से एक्सेस कर सकते हैं। API चैनल पर वीडियो और सब्सक्राइबर की संख्या तक पहुंच प्रदान करता है, जिससे विश्लेषण और एकीकरण के लिए पर्याप्त डेटा उपलब्ध होता है।
फिर भी, कुछ विशिष्ट तत्व ऐसे हो सकते हैं जिन्हें API के माध्यम से प्राप्त नहीं किया जा सकता और जिन्हें केवल वेब स्क्रैपिंग के माध्यम से निकाला जा सकता है। उदाहरण के लिए, दर्शकों की टिप्पणियों की भावना या उन्होंने किस समय इंटरैक्ट किया, जैसी गहन सहभागिता मीट्रिक प्राप्त करने के लिए YouTube पृष्ठों की स्क्रैपिंग की आवश्यकता होगी। यह तकनीक सामान्यतः अधिक जटिल होती है और प्लेटफ़ॉर्म की लगातार बदलती सामग्री रेंडरिंग और डेटा स्क्रैपिंग पर कड़े नियमों के कारण जोखिमपूर्ण भी हो सकती है।
अगले अनुभागों में हम आपको दिखाएंगे कि एक स्क्रिप्ट कैसे बनाई जाती है और Python में YouTube से डेटा को कुशलतापूर्वक कैसे स्क्रैप किया जाता है।
YouTube को स्क्रैप करते समय डिटेक्शन से बचने के लिए प्रॉक्सी का उपयोग
Python के साथ YouTube वीडियो स्क्रैप करने के लिए, प्रॉक्सी का उपयोग आवश्यक है ताकि IP प्रतिबंध और बॉट रोकथाम तकनीकों से बचा जा सके। नीचे कुछ प्रॉक्सी प्रकार और उनके विवरण दिए गए हैं:
- Residential proxies असली IP पतों से जुड़े होते हैं और वेबसाइट्स के लिए वैध कनेक्शन के रूप में उपयोग किए जाते हैं। YouTube डेटा स्क्रैप करने के लिए, जहाँ भरोसा अत्यंत आवश्यक होता है, वहाँ ये प्रॉक्सी सबसे अच्छा विकल्प हैं। ये स्क्रैपर को वास्तविक उपयोगकर्ता की तरह व्यवहार करने में सक्षम बनाते हैं, जिससे बॉट के रूप में डिटेक्ट होने की संभावना कम हो जाती है।
- ISP proxies residential और datacenter प्रॉक्सी के बीच का मध्यस्थ विकल्प प्रदान करते हैं। इन्हें इंटरनेट सेवा प्रदाताओं द्वारा जारी किया जाता है, जो वास्तविक IP पते प्रदान करते हैं और जिन्हें प्रॉक्सी के रूप में चिह्नित करना कठिन होता है। इस वजह से, ये ISP प्रॉक्सी विशेष रूप से तब प्रभावी होते हैं जब YouTube खोज परिणामों को स्क्रैप करना हो, जहाँ प्रामाणिकता और उच्च प्रदर्शन दोनों आवश्यक होते हैं।
- हालाँकि Datacenter proxies सबसे तेज होते हैं, परंतु YouTube जैसे प्लेटफ़ॉर्म इन्हें बड़े डेटा सेंटर्स से आने के कारण आसानी से पहचान सकते हैं। स्क्रैपिंग के दौरान ब्लॉक किए जाने का जोखिम अधिक होता है, यद्यपि वे कुशल और उपयोग में आसान होते हैं। ये तब सबसे उपयुक्त होते हैं जब डेटा प्रोसेसिंग की गति डिटेक्शन के जोखिम से अधिक महत्वपूर्ण हो।
- Mobile proxies सबसे वैध समाधान प्रदान करते हैं क्योंकि ये मोबाइल नेटवर्क पर आधारित उपकरणों से कनेक्शन को रूट करते हैं। स्क्रैपिंग के लिए इनका उपयोग अत्यधिक प्रभावी होता है क्योंकि ये अक्सर ब्लॉक नहीं होते हैं, चूंकि मोबाइल IP पतों को सेवा प्रदाता बार-बार घुमाते हैं। लेकिन ध्यान देना आवश्यक है कि इनकी गति अन्य प्रकारों की तुलना में कम हो सकती है।
इन प्रकारों का रणनीतिक रूप से उपयोग करके, यह संभव है कि YouTube से डेटा को बिना डिटेक्ट हुए स्क्रैप किया जा सके, जिससे प्लेटफ़ॉर्म की सेवा शर्तों का पालन करते हुए डेटा तक निरंतर पहुंच संभव हो सके। साथ ही, इन प्रॉक्सी प्रकारों की सही समझ तब भी आपकी मदद करेगी जब आपको एक स्क्रैपिंग के लिए प्रॉक्सी की आवश्यकता होगी।
YouTube से डेटा निकालने के लिए एक स्क्रैपर बनाना
चलिए शुरुआत करते हैं कि YouTube को कैसे स्क्रैप करें, इसके लिए सबसे पहले हमें एक स्क्रिप्ट बनानी होगी और कुछ पैकेज इंस्टॉल करने होंगे। सबसे पहले हम Selenium-wire को इंस्टॉल करेंगे, जो Selenium का एक प्रॉक्सी एक्सटेंशन है और जिसमें कुछ महत्वपूर्ण क्लास और मॉड्यूल शामिल होते हैं। इन पैकेज को इंस्टॉल करने के लिए नीचे दिया गया कमांड स्ट्रिंग अपने कमांड इंटरफेस में चलाएं:
pip install selenium-wire selenium blinker==1.7.0
आइए अब हम अपने ध्यान को इम्पोर्ट्स की ओर मोड़ते हैं।
चरण 1: लाइब्रेरी और पैकेज आयात करना
इस चरण पर, हमें उन लाइब्रेरी और पैकेज को लोड करना होगा जो वेब एलिमेंट्स को लक्षित करते हैं, जिनके लिए स्क्रिप्ट लिखी गई है। इसके अतिरिक्त, हमें डेटा प्रोसेसिंग और रनटाइम प्रबंधन के लिए मॉड्यूल भी शामिल करने चाहिए ताकि स्क्रिप्ट का निष्पादन कुशलतापूर्वक हो सके।
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import json
import time
json मॉड्यूल स्क्रैप किए गए डेटा को उचित रूप से स्वरूपित JSON डेटा में परिवर्तित करने में मदद करता है, ताकि बेहतर प्रस्तुति हो सके और साथ ही हमारा IP पता भी छिपाया जा सके। वहीं, time मॉड्यूल का उपयोग क्रियाओं को अस्पष्ट करने और यादृच्छिकता जोड़ने के लिए किया जाता है, ताकि यदि कोई अत्यधिक अनुमानित व्यवहार पता चले तो उसे छिपाया जा सके।
इसके अलावा, यह यह भी सुनिश्चित करने में मदद करता है कि जिन तत्वों को डेटा से निकाला जाना है वे पहले से ही पृष्ठ पर उपलब्ध हों। बाकी के इम्प ोर्ट्स आवश्यक क्लास या सबमॉड्यूल होते हैं जो विभिन्न कार्य करते हैं, और जिन पर कोड के अन्य भागों में चर्चा की जाएगी।
चरण 2: Selenium Chrome ड्राइवर सेट करना
जब Python में लिखी गई स्क्रिप्ट से Selenium इंस्टेंस को ट्रिगर किया जाता है, तो स्क्रिप्ट अपने आप किसी भी कार्य को करने के लिए हमारे IP का उपयोग करती है। यह YouTube जैसी कुछ साइटों के लिए काफी समस्याजनक हो सकता है, जहाँ स्क्रैपिंग की जाती है। बेहतर समझ के लिए वेबसाइट के robots फ़ाइल की समीक्षा करना उचित होता है। इसका परिणाम यह हो सकता है कि YouTube चैनल को स्क्रैप करने की कोशिश करते समय आपके IP को अस्थायी रूप से प्रतिबंधित कर दिया जाए।
इन सभी चुनौतियों से निपटने के लिए हमें कुछ कार्य करने होंगे। सबसे पहले, हमें उस प्रॉक्सी का विवरण तीन वेरिएबल्स के रूप में संग्रहीत करना होगा जिसका हम उपयोग करने जा रहे हैं। फिर हम एक विकल्प वेरिएबल chrome_options को परिभाषित करते हैं, जिसे selenium.Chrome() इंस्टेंस को पास किया जाएगा ताकि यह सूचित किया जा सके कि स्क्रैपिंग के दौरान कौन-सी प्रॉक्सी का उपयोग करना है। आवश्यक तर्कों को chrome_options में पास करके प्रॉक्सी जानकारी सेट की जाती है। नीचे बताया गया है कि प्रॉक्सी के साथ YouTube को कैसे स्क्रैप करें:
# उपयोगकर्ता नाम और पासवर्ड के साथ प्रॉक्सी सर्वर पता निर्दिष्ट करें
proxy_address = ""
proxy_username = ""
proxy_password = ""
# प्रॉक्सी और प्रमाणीकरण के साथ क्रोम विकल्प सेट करें
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
# सेलेनियम-वायर के साथ एक WebDriver उदाहरण बनाएं
driver = wiredriver.Chrome(options=chrome_options)
चरण 3: YouTube वीडियो पेज कैसे स्क्रैप करें
“youtube_url_to_scrape” नामक एक वेरिएबल सेट करें, जिसमें YouTube होमपेज का पता रखा जाएगा। यह वेरिएबल Selenium के “driver.get()” मेथड में उपयोग की जाती है, ताकि स्क्रिप्ट को पता हो कि स्क्रैपिंग के लिए किस विशेष वेबपेज पर जाना है। जब स्क्रिप्ट चलाई जाती है, तो यह क्रिया एक नया Chrome विंडो खोल देगी।
youtube_url_to_scrape = ""
# सेलेनियम-तार की बढ़ी हुई क्षमताओं के साथ अपने सेलेनियम स्वचालन का प्रदर्शन करें
driver.get(youtube_url_to_scrape)
अब हम “extract_information()” फ़ंक्शन का वर्णन करते हैं, जो अपने नाम के अनुसार पेज से जानकारी निकालने का कार्य करता है।
हमने यह सुनिश्चित किया कि पेज के सभी एलिमेंट्स लोड हो चुके हैं। यह WebDriver API और WebDriverWait के संयोजन का उपयोग करके किया जाता है, जिससे स्क्रिप्ट तब तक रुकी रहती है जब तक कि "more" बटन जैसी उदाहरण एलिमेंट उपलब्ध न हो जाए और उस पर क्लिक न किया जाए। जैसे ही यह एलिमेंट उपलब्ध होती है, Selenium वीडियो के पूर्ण विवरण को दिखाने के लिए एक JavaScript क्लिक निष्पादित करता है।
डायनामिक कमेंट समस्या
इस समस्या को हल करने के लिए, हम इससे संबंधित किसी भी समस्या को समाप्त करने के लिए एक समाधान लागू कर रहे हैं। Actions क्लास और Time मॉड्यूल का उपयोग करके, हम हर 10 सेकंड में दो बार नीचे स्क्रॉल करते हैं, ताकि अधिक से अधिक YouTube टिप्पणियाँ स्क्रैप की जा सकें। यह सुनिश्चित करता है कि डायनामिक रूप से लोड होने वाले कंटेंट के साथ कोई परेशानी न हो।
def extract_information() -> dict:
try:
element = WebDriverWait(driver, 15).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="expand"]'))
)
element.click()
time.sleep(10)
actions = ActionChains(driver)
actions.send_keys(Keys.END).perform()
time.sleep(10)
actions.send_keys(Keys.END).perform()
time.sleep(10)
Selenium WebDriver का उपयोग करते हुए, एलिमेंट्स को खोजने के कई विशिष्ट तरीके होते हैं। कोई व्यक्ति ID, CLASS_NAME, XPATH आदि के माध्यम से खोज कर सकता है। इस Python ट्यूटोरियल में, जहां हम YouTube से डेटा स्क्रैप करना सीख रहे हैं, हम इन सभी तरीकों का संयोजन करेंगे, न कि केवल एक का उपयोग करेंगे।
XPATH एक अधिक जटिल प्रणाली है जो स्क्रैपिंग के लिए वेरिएबल्स खोजने में उपयोग होती है, क्योंकि यह पैटर्न आधारित लगती है। इसे सबसे कठिन म ाना जाता है, लेकिन कम से कम Chrome में ऐसा नहीं है।
जब आप कोड को देख रहे होते हैं, तब आपको केवल Chrome के inspect सेक्शन में किसी एलिमेंट पर राइट-क्लिक करके "copy XPATH" विकल्प को चुनना होता है। XPATH प्राप्त करने के बाद, ‘find_elements’ मेथड का आसानी से उपयोग किया जा सकता है उन सभी कंपोनेंट्स को खोजने के लिए जिनमें वीडियो का शीर्षक, विवरण आदि जैसे आवश्यक विवरण होते हैं।
यह बताना महत्वपूर्ण है कि वेबपेज पर कुछ फीचर्स में डुप्लिकेट प्रॉपर्टीज हो सकती हैं, और इसी कारण ‘find_elements()’ तकनीक एक स्ट्रिंग की बजाय एक सूची लौटाती है। ऐसे परिदृश्य में, आपको उस सूची की जांच करनी होती है और यह पहचानना होता है कि किस इंडेक्स में आवश्यक जानकारी है और कौन-सा टेक्स्ट निकाला जाना है।
अंततः, “data” नामक एक डिक्शनरी वेरिएबल लौटाई जाती है, जिसमें स्क्रैपिंग के दौरान प्राप्त की गई सभी जानकारी संलग्न होती है, और यह अगले भाग के लिए आवश्यक होती है।
video_title = driver.find_elements(By.XPATH, '//*[@id="title"]/h1')[0].text
owner = driver.find_elements(By.XPATH, '//*[@id="text"]/a')[0].text
total_number_of_subscribers = \
driver.find_elements(By.XPATH, "//div[@id='upload-info']//yt-formatted-string[@id='owner-sub-count']")[
0].text
video_description = driver.find_elements(By.XPATH, '//*[@id="description-inline-expander"]/yt-attributed-string/span/span')
result = []
for i in video_description:
result.append(i.text)
description = ''.join(result)
publish_date = driver.find_elements(By.XPATH, '//*[@id="info"]/span')[2].text
total_views = driver.find_elements(By.XPATH, '//*[@id="info"]/span')[0].text
number_of_likes = driver.find_elements(By.XPATH, '//*[@id="top-level-buttons-computed"]/segmented-like-dislike-button-view-model/yt-smartimation/div/div/like-button-view-model/toggle-button-view-model/button-view-model/button/div')[
1].text
comment_names = driver.find_elements(By.XPATH, '//*[@id="author-text"]/span')
comment_content = driver.find_elements(By.XPATH, '//*[@id="content-text"]/span')
comment_library = []
for each in range(len(comment_names)):
name = comment_names[each].text
content = comment_content[each].text
indie_comment = {
'name': name,
'comment': content
}
comment_library.append(indie_comment)
data = {
'owner': owner,
'subscribers': total_number_of_subscribers,
'video_title': video_title,
'description': description,
'date': publish_date,
'views': total_views,
'likes': number_of_likes,
'comments': comment_library
}
return data
except Exception as err:
print(f"Error: {err}")
चरण 4: एकत्रित किए गए डेटा को JSON फ़ाइल में लिखना
def organize_write_data(data:dict):
output = json.dumps(data, indent=2, ensure_ascii=False).encode("ascii", "ignore").decode("utf-8")
try:
with open("output.json", 'w', encoding='utf-8') as file:
file.write(output)
except Exception as err:
print(f"Error encountered: {err}")
“organize_write_data” नामक एक यूज़र द्वारा परिभाषित फ़ंक्शन को इस तरह डिज़ाइन किया गया है कि वह पिछले चरण से प्राप्त “data” आउटपुट को स्वीकार करे। इसका मुख्य कार्य उस डेटा को JSON प्रारूप में संरचित करना और उसे output.json नामक फ़ाइल में लिखना है, इस दौरान यह सुनिश्चित करते हुए कि फ़ाइल में लेखन के समय सभी सही प्रक्रियाओं का पालन किया गया है।
पूरा कोड
अब हम यह समझ चुके हैं कि YouTube को सही तरीके से कैसे स्क्रैप किया जाए। अब तक जो सीखा है, उसके आधार पर यह रहा हमारे स्क्रैपिंग प्रोग्राम का पूरा कोड:
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import json
import time
# उपयोगकर्ता नाम और पासवर्ड के साथ प्रॉक्सी सर्वर पता निर्दिष्ट करें
proxy_address = ""
proxy_username = ""
proxy_password = ""
# प्रॉक्सी और प्रमाणीकरण के साथ क्रोम विकल्प सेट करें
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
# सेलेनियम-वायर के साथ एक WebDriver उदाहरण बनाएं
driver = wiredriver.Chrome(options=chrome_options)
youtube_url_to_scrape = ""
# सेलेनियम-तार की बढ़ी हुई क्षमताओं के साथ अपने सेलेनियम स्वचालन का प्रदर्शन करें
driver.get(youtube_url_to_scrape)
def extract_information() -> dict:
try:
element = WebDriverWait(driver, 15).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="expand"]'))
)
element.click()
time.sleep(10)
actions = ActionChains(driver)
actions.send_keys(Keys.END).perform()
time.sleep(10)
actions.send_keys(Keys.END).perform()
time.sleep(10)
video_title = driver.find_elements(By.XPATH, '//*[@id="title"]/h1')[0].text
owner = driver.find_elements(By.XPATH, '//*[@id="text"]/a')[0].text
total_number_of_subscribers = \
driver.find_elements(By.XPATH, "//div[@id='upload-info']//yt-formatted-string[@id='owner-sub-count']")[
0].text
video_description = driver.find_elements(By.XPATH,
'//*[@id="description-inline-expander"]/yt-attributed-string/span/span')
result = []
for i in video_description:
result.append(i.text)
description = ''.join(result)
publish_date = driver.find_elements(By.XPATH, '//*[@id="info"]/span')[2].text
total_views = driver.find_elements(By.XPATH, '//*[@id="info"]/span')[0].text
number_of_likes = driver.find_elements(By.XPATH,
'//*[@id="top-level-buttons-computed"]/segmented-like-dislike-button-view-model/yt-smartimation/div/div/like-button-view-model/toggle-button-view-model/button-view-model/button/div')[
1].text
comment_names = driver.find_elements(By.XPATH, '//*[@id="author-text"]/span')
comment_content = driver.find_elements(By.XPATH,
'//*[@id="content-text"]/span')
comment_library = []
for each in range(len(comment_names)):
name = comment_names[each].text
content = comment_content[each].text
indie_comment = {
'name': name,
'comment': content
}
comment_library.append(indie_comment)
data = {
'owner': owner,
'subscribers': total_number_of_subscribers,
'video_title': video_title,
'description': description,
'date': publish_date,
'views': total_views,
'likes': number_of_likes,
'comments': comment_library
}
return data
except Exception as err:
print(f"Error: {err}")
# JSON को डेटा रिकॉर्ड करें
def organize_write_data(data: dict):
output = json.dumps(data, indent=2, ensure_ascii=False).encode("ascii", "ignore").decode("utf-8")
try:
with open("output.json", 'w', encoding='utf-8') as file:
file.write(output)
except Exception as err:
print(f"Error encountered: {err}")
organize_write_data(extract_information())
driver.quit()
परिणाम
अब हम यह भी जानते हैं कि Python की मदद से YouTube टिप्पणियाँ कैसे स्क्रैप की जाती हैं। आउटपुट कुछ इस प्रकार दिखाई देता है:
{
"owner": "Suzie Taylor",
"subscribers": "165K subscribers",
"video_title": "I Spent $185,000 From MrBeast",
"description": "@MrBeast blessed me with $185,000, after SURVIVING 100 DAYS trapped with a STRANGER. Now I want to bless you!\nGive This A Like if you Enjoyed :))\n-\nTo Enter The Giveaway: \nFollow me on Instagram: https://www.instagram.com/sooztaylor/...\nSubscribe to me on Youtube: \n / @suzietaylor \nI am picking winners for the giveaway ONE WEEK from today (December 23rd) \n-\nThank you everyone for all of your love already. This is my dream!",
"date": "Dec 16, 2023",
"views": "4,605,785 ",
"likes": "230K",
"comments": [
{
"name": "",
"comment": "The right person got the money "
},
{
"name": "@Scottster",
"comment": "Way to go Suzie, a worthy winner! Always the thought that counts and you put a lot into it!"
},
{
"name": "@cidsx",
"comment": "I'm so glad that she's paying it forward! She 100% deserved the reward"
},
{
"name": "@Basicskill720",
"comment": "This is amazing Suzie. Way to spread kindness in this dark world. It is much needed !"
},
{
"name": "@eliasnull",
"comment": "You are such a blessing Suzie! The world needs more people like you."
},
{
"name": "@iceline22",
"comment": "That's so awesome you're paying it forward! You seem so genuine, and happy to pass along your good fortune! Amazing! Keep it up!"
},
{
"name": "",
"comment": "Always nice to see a Mr. Beast winner turn around and doing nice things for others. I know this was but a small portion of what you won and nobody expects you to not take care of yourself with that money, but to give back even in small ways can mean so much. Thank you for doing this."
}
]
}
YouTube को स्क्रैप कैसे करें: अंतिम विचार
YouTube के डेटाबेस से जानकारी का लाभ उठाने की क्षमता अत्यंत मूल्यवान है, विशेष रूप से तब जब आप ऐसे ऑटोमेशन या प्रॉक्सी स्क्रिप्ट्स का उपयोग करते हैं जो प्लेटफ़ॉर्म के नियमों के अनुरूप रहने में मदद करते हैं। ऊपर दिए गए हमारे मुख्य तरीके यह दिखाते हैं कि YouTube को कैसे स्क्रैप किया जाए, और यह डेटा को जिम्मेदारी से एकत्र करने में सहायक होगा, जिससे आप प्लेटफ़ॉर्म द्वारा प्रतिबंधित या सीमित किए जाने से बच सकते हैं।
