पायथन का उपयोग करके YouTube को कैसे परिमार्जन करें

2 दिसम्बर 2024
5 मिनट पढ़ें
AI द्वारा जनरेट किया गया सारांश:

YouTube से डेटा स्क्रैप करना इसकी गतिशील सामग्री और एंटी-स्क्रैपिंग उपायों के कारण चुनौतीपूर्ण हो सकता है। हालांकि, सही उपकरण और तकनीकों के साथ, आप कुशलता से उपयोगी जानकारी निकाल सकते हैं। इस लेख में, हम आपको पायथन, नाटककार और LXML का उपयोग करके YouTube वीडियो डेटा को स्क्रैप करने की प्रक्रिया के माध्यम से चलेंगे।

Python के साथ YouTube डेटा स्क्रैप करने के लिए डेटा संरचना को समझना

इससे पहले कि हम जानें कि YouTube को कैसे स्क्रैप करना है, हमें उसकी संरचना को समझना होगा। इसमें इतनी सारी विशेषताएँ हैं जो उपयोगकर्ता गतिविधि और वीडियो सांख्यिकी से संबंधित अंतहीन डेटा प्रकारों का समर्थन करती हैं। प्लेटफ़ॉर्म के कुछ प्रमुख मापदंडों में वीडियो शीर्षक और विवरण, जोड़े गए टैग, दृश्य संख्या, लाइक और टिप्पणियाँ, साथ ही चैनल और प्लेलिस्ट जानकारी शामिल हैं। ये तत्व कंटेंट मार्केटर्स और क्रिएटर्स के लिए वीडियो प्रदर्शन का मूल्यांकन करने और कंटेंट रणनीति बनाने में महत्वपूर्ण भूमिका निभाते हैं।

YouTube Data API के माध्यम से, डेवलपर्स अधिकांश मेट्रिक्स को प्रोग्रामेटिक रूप से एक्सेस कर सकते हैं। API चैनल पर वीडियो और सब्सक्राइबर की संख्या तक पहुंच प्रदान करता है, जिससे विश्लेषण और एकीकरण के लिए पर्याप्त डेटा उपलब्ध होता है।

फिर भी, कुछ विशिष्ट तत्व ऐसे हो सकते हैं जिन्हें API के माध्यम से प्राप्त नहीं किया जा सकता और जिन्हें केवल वेब स्क्रैपिंग के माध्यम से निकाला जा सकता है। उदाहरण के लिए, दर्शकों की टिप्पणियों की भावना या उन्होंने किस समय इंटरैक्ट किया, जैसी गहन सहभागिता मीट्रिक प्राप्त करने के लिए YouTube पृष्ठों की स्क्रैपिंग की आवश्यकता होगी। यह तकनीक सामान्यतः अधिक जटिल होती है और प्लेटफ़ॉर्म की लगातार बदलती सामग्री रेंडरिंग और डेटा स्क्रैपिंग पर कड़े नियमों के कारण जोखिमपूर्ण भी हो सकती है।

अगले अनुभागों में हम आपको दिखाएंगे कि एक स्क्रिप्ट कैसे बनाई जाती है और Python में YouTube से डेटा को कुशलतापूर्वक कैसे स्क्रैप किया जाता है।

YouTube को स्क्रैप करते समय डिटेक्शन से बचने के लिए प्रॉक्सी का उपयोग

Python के साथ YouTube वीडियो स्क्रैप करने के लिए, प्रॉक्सी का उपयोग आवश्यक है ताकि IP प्रतिबंध और बॉट रोकथाम तकनीकों से बचा जा सके। नीचे कुछ प्रॉक्सी प्रकार और उनके विवरण दिए गए हैं:

  1. Residential proxies असली IP पतों से जुड़े होते हैं और वेबसाइट्स के लिए वैध कनेक्शन के रूप में उपयोग किए जाते हैं। YouTube डेटा स्क्रैप करने के लिए, जहाँ भरोसा अत्यंत आवश्यक होता है, वहाँ ये प्रॉक्सी सबसे अच्छा विकल्प हैं। ये स्क्रैपर को वास्तविक उपयोगकर्ता की तरह व्यवहार करने में सक्षम बनाते हैं, जिससे बॉट के रूप में डिटेक्ट होने की संभावना कम हो जाती है।
  2. ISP proxies residential और datacenter प्रॉक्सी के बीच का मध्यस्थ विकल्प प्रदान करते हैं। इन्हें इंटरनेट सेवा प्रदाताओं द्वारा जारी किया जाता है, जो वास्तविक IP पते प्रदान करते हैं और जिन्हें प्रॉक्सी के रूप में चिह्नित करना कठिन होता है। इस वजह से, ये ISP प्रॉक्सी विशेष रूप से तब प्रभावी होते हैं जब YouTube खोज परिणामों को स्क्रैप करना हो, जहाँ प्रामाणिकता और उच्च प्रदर्शन दोनों आवश्यक होते हैं।
  3. हालाँकि Datacenter proxies सबसे तेज होते हैं, परंतु YouTube जैसे प्लेटफ़ॉर्म इन्हें बड़े डेटा सेंटर्स से आने के कारण आसानी से पहचान सकते हैं। स्क्रैपिंग के दौरान ब्लॉक किए जाने का जोखिम अधिक होता है, यद्यपि वे कुशल और उपयोग में आसान होते हैं। ये तब सबसे उपयुक्त होते हैं जब डेटा प्रोसेसिंग की गति डिटेक्शन के जोखिम से अधिक महत्वपूर्ण हो।
  4. Mobile proxies सबसे वैध समाधान प्रदान करते हैं क्योंकि ये मोबाइल नेटवर्क पर आधारित उपकरणों से कनेक्शन को रूट करते हैं। स्क्रैपिंग के लिए इनका उपयोग अत्यधिक प्रभावी होता है क्योंकि ये अक्सर ब्लॉक नहीं होते हैं, चूंकि मोबाइल IP पतों को सेवा प्रदाता बार-बार घुमाते हैं। लेकिन ध्यान देना आवश्यक है कि इनकी गति अन्य प्रकारों की तुलना में कम हो सकती है।

इन प्रकारों का रणनीतिक रूप से उपयोग करके, यह संभव है कि YouTube से डेटा को बिना डिटेक्ट हुए स्क्रैप किया जा सके, जिससे प्लेटफ़ॉर्म की सेवा शर्तों का पालन करते हुए डेटा तक निरंतर पहुंच संभव हो सके। साथ ही, इन प्रॉक्सी प्रकारों की सही समझ तब भी आपकी मदद करेगी जब आपको एक स्क्रैपिंग के लिए प्रॉक्सी की आवश्यकता होगी।

पर्यावरण सेटअप

PIP का उपयोग करके आवश्यक पुस्तकालयों को स्थापित करें:

pip install playwright 
pip install lxml

नाटककार ब्राउज़र बायनेरिज़ स्थापित करें:

playwright install

केवल क्रोमियम ब्राउज़र बायनेरी इंस्टॉल करने के लिए निम्न कमांड का उपयोग करें:

playwright install chromium

पायथन के साथ YouTube डेटा को स्क्रैप करने के लिए, आपको मुख्य रूप से निम्नलिखित पुस्तकालयों की आवश्यकता होगी:

  1. नाटककार: हेडलेस ब्राउज़रों को स्वचालित करने के लिए एक शक्तिशाली पुस्तकालय, जो आपको वेब पेजों के साथ बातचीत करने में सक्षम बनाता है जैसे कि आप एक वास्तविक उपयोगकर्ता थे;
  2. LXML: पायथन में XML और HTML के प्रसंस्करण के लिए एक तेज और सुविधा-समृद्ध पुस्तकालय, दस्तावेजों को क्वेरी करने के लिए XPATH का समर्थन करता है;
  3. CSV मॉड्यूल: CSV फ़ाइल में निकाले गए डेटा को बचाने के लिए एक अंतर्निहित पायथन लाइब्रेरी।

चरण 1: आयात आवश्यक पुस्तकालय

import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv

चरण 2: हेडलेस ब्राउज़र ऑटोमेशन

नाटककार के साथ एक हेडलेस ब्राउज़र लॉन्च करें, YouTube वीडियो URL पर नेविगेट करें, और पृष्ठ को पूरी तरह से लोड करने की प्रतीक्षा करें।

अधिक टिप्पणियों को लोड करने के लिए पृष्ठ को स्क्रॉल करें।

browser = await playwright.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()

# YouTube वीडियो URL को नेविगेट करना
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")

# अधिक टिप्पणियों को लोड करने के लिए नीचे स्क्रॉल करना
for _ in range(20):
    await page.mouse.wheel(0, 200)
    await asyncio.sleep(0.2)

# अतिरिक्त सामग्री को लोड करने के लिए कुछ समय दे रहा है
await page.wait_for_timeout(1000)

चरण 3: HTML सामग्री पार्सिंग

नाटककार का उपयोग करके पृष्ठ की HTML सामग्री निकालें और इसे LXML के साथ पार्स करें।

# पृष्ठ सामग्री निकालना
page_content = await page.content()

# HTML सामग्री को पार्स करना
parser = html.fromstring(page_content)

चरण 4: डेटा निष्कर्षण

XPath अभिव्यक्तियों का उपयोग करके आवश्यक डेटा बिंदुओं (जैसे, शीर्षक, चैनल, टिप्पणियों) को निकालें।

वीडियो मेटाडेटा और टिप्पणियों सहित सभी प्रासंगिक डेटा एकत्र करें।

# वीडियो डेटा निकालना
title = parser.xpath('//div[@id="title"]/h1/yt-formatted-string/text()')[0]
channel = parser.xpath('//yt-formatted-string[@id="text"]/a/text()')[0]
channel_link = 'https://www.youtube.com' + parser.xpath('//yt-formatted-string[@id="text"]/a/@href')[0]
posted = parser.xpath('//yt-formatted-string[@id="info"]/span/text()')[2]
total_views = parser.xpath('//yt-formatted-string[@id="info"]/span/text()')[0]
total_comments = parser.xpath('//h2[@id="count"]/yt-formatted-string/span/text()')[0]
comments_list = parser.xpath('//yt-attributed-string[@id="content-text"]/span/text()')

चरण 5: डेटा सहेजना

आसान विश्लेषण और भंडारण के लिए एक CSV फ़ाइल में निकाले गए डेटा को सहेजें।

# CSV फ़ाइल में डेटा सहेजना
with open('youtube_video_data.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(["Title", "Channel", "Channel Link", "Posted", "Total Views", "Total Comments", "Comments"])
    writer.writerow([title, channel, channel_link, posted, total_views, total_comments, ", ".join(comments_list)])

प्रॉक्सी कार्यान्वयन

प्रॉक्सी वेब स्क्रैपिंग में एक महत्वपूर्ण भूमिका निभाते हैं, खासकर जब बड़े पैमाने पर डेटा निष्कर्षण या YouTube जैसे सख्त एंटी-बॉट उपायों के साथ साइटों से निपटते हैं। यहां बताया गया है कि नाटककार स्क्रिप्ट में प्रॉक्सी कैसे लागू किया जाता है:

प्रॉक्सी सेटअप:

  1. Playwright.chromium.launch () में प्रॉक्सी पैरामीटर का उपयोग एक निर्दिष्ट प्रॉक्सी सर्वर के माध्यम से सभी ब्राउज़र ट्रैफ़िक को रूट करने के लिए किया जाता है।
  2. प्रॉक्सी सर्वर विवरण, सर्वर एड्रेस, उपयोगकर्ता नाम और पासवर्ड सहित, कॉन्फ़िगर किया जाना चाहिए।

browser = await playwright.chromium.launch(
        headless=True,
        proxy={"server": "http://your_proxy_ip:port", "username": "your_username", "password": "your_password"}
    )

प्रॉक्सी का उपयोग करने के लाभ:

  • आईपी ​​मास्किंग: प्रॉक्सी आपके मूल आईपी पते को छिपाते हैं, अवरुद्ध होने की संभावना को कम करते हैं।
  • अनुरोध वितरण: परदे के पीछे घुमाकर, आप कई उपयोगकर्ताओं से ट्रैफ़िक की नकल करते हुए, विभिन्न आईपी पते पर अनुरोध वितरित कर सकते हैं।
  • एक्सेस प्रतिबंधित सामग्री: प्रॉक्सी क्षेत्रीय प्रतिबंधों या एक्सेस सामग्री को बायपास करने में मदद कर सकता है जो कुछ आईपी रेंज तक सीमित हो सकता है।

यह कार्यान्वयन सुनिश्चित करता है कि आपकी स्क्रैपिंग गतिविधियों को YouTube के एंटी-बॉट तंत्र द्वारा पता लगाने और अवरुद्ध होने की संभावना कम है।

पूरा कोड कार्यान्वयन

नीचे Playright और LXML का उपयोग करके YouTube वीडियो डेटा को स्क्रैप करने के लिए पूरा कोड है, जिसमें प्रॉक्सी कार्यान्वयन भी शामिल है।

import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv

# नाटककार चलाने और डेटा निकालने के लिए एसिंक्रोनस फ़ंक्शन
async def run(playwright: Playwright) -> None:
    # प्रॉक्सी सेटिंग्स के साथ हेडलेस ब्राउज़र लॉन्च करना
    browser = await playwright.chromium.launch(
        headless=True,
        proxy={"server": "http://your_proxy_ip:port", "username": "your_username", "password": "your_password"}
    )
    context = await browser.new_context()
    page = await context.new_page()

    # YouTube वीडियो URL को नेविगेट करना
    await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")

    # अधिक टिप्पणियों को लोड करने के लिए नीचे स्क्रॉल करना
    for _ in range(20):
        await page.mouse.wheel(0, 200)
        await asyncio.sleep(0.2)
    
    # अतिरिक्त सामग्री को लोड करने के लिए कुछ समय दे रहा है
    await page.wait_for_timeout(1000)
    
    # पृष्ठ सामग्री निकालना
    page_content = await page.content()

    # ब्राउज़र को बंद करना
    await context.close()
    await browser.close()

    # HTML सामग्री को पार्स करना
    parser = html.fromstring(page_content)

    # वीडियो डेटा निकालना
    title = parser.xpath('//div[@id="title"]/h1/yt-formatted-string/text()')[0]
    channel = parser.xpath('//yt-formatted-string[@id="text"]/a/text()')[0]
    channel_link = 'https://www.youtube.com' + parser.xpath('//yt-formatted-string[@id="text"]/a/@href')[0]
    posted = parser.xpath('//yt-formatted-string[@id="info"]/span/text()')[2]
    total_views = parser.xpath('//yt-formatted-string[@id="info"]/span/text()')[0]
    total_comments = parser.xpath('//h2[@id="count"]/yt-formatted-string/span/text()')[0]
    comments_list = parser.xpath('//yt-attributed-string[@id="content-text"]/span/text()')

    # CSV फ़ाइल में डेटा सहेजना
    with open('youtube_video_data.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(["Title", "Channel", "Channel Link", "Posted", "Total Views", "Total Comments", "Comments"])
        writer.writerow([title, channel, channel_link, posted, total_views, total_comments, ", ".join(comments_list)])

# एसिंक्रोनस फ़ंक्शन चलाना
async def main():
    async with async_playwright() as playwright:
        await run(playwright)

asyncio.run(main())

टिप्पणियों सहित विभिन्न YouTube वीडियो डेटा को स्क्रैप करने के लिए पायथन, नाटककार, और LXML का उपयोग करने पर यहां एक चरण-दर-चरण ट्यूटोरियल है। यह प्रॉक्सी का उपयोग करके और ब्राउज़रों के व्यवहार को अनुकरण करने के लिए कोड चलाने के द्वारा किया जाता है ताकि स्क्रैपिंग में सर्वोत्तम प्रथाओं का पालन करते हुए गतिशील डेटा को प्रभावी ढंग से परिमार्जन किया जा सके। यदि आपको विश्लेषण के लिए जानकारी की आवश्यकता है या डेटासेट बनाने की आवश्यकता है, तो ऐसे तरीके आपको YouTube प्लेटफॉर्म पर सामना करने वाली कठिनाइयों पर काबू पाने में सहायता करेंगे।

लेख की सामग्री: