Das Scraping von Daten aus YouTube kann aufgrund des dynamischen Inhalts und der Anti-Scraping-Maßnahmen eine Herausforderung sein. Mit den richtigen Tools und Techniken können Sie jedoch effizient nützliche Informationen extrahieren. In diesem Artikel führen wir Sie durch den Prozess des Scrapens von YouTube-Videodaten mit Python, Playwright und lxml.
Installieren Sie die notwendigen Bibliotheken mit pip:
pip install playwright
pip install lxml
Installieren Sie die Binärdateien des Playwright-Browsers:
playwright install
Um nur die Binärdateien des Chromium-Browsers zu installieren, verwenden Sie den folgenden Befehl:
playwright install chromium
Für das Web-Scraping von YouTube-Daten mit Python werden vor allem die folgenden Bibliotheken benötigt:
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
Starten Sie einen Headless-Browser mit Playwright, rufen Sie die URL des YouTube-Videos auf, und warten Sie, bis die Seite vollständig geladen ist.
Scrollen Sie die Seite, um weitere Kommentare zu laden.
browser = await playwright.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()
# Navigieren zur URL des YouTube-Videos
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Nach unten scrollen, um weitere Kommentare zu laden
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Zeit für das Laden zusätzlicher Inhalte gewähren
await page.wait_for_timeout(1000)
Extrahieren Sie den HTML-Inhalt der Seite mit Playwright und parsen Sie ihn mit lxml.
# Extrahieren des Seiteninhalts
page_content = await page.content()
# Parsen des HTML-Inhalts
parser = html.fromstring(page_content)
Extrahieren Sie die erforderlichen Datenpunkte (z. B. Titel, Kanal, Kommentare) mithilfe von XPath-Ausdrücken.
Sammeln aller relevanten Daten, einschließlich Video-Metadaten und Kommentare.
# Extrahieren von Videodaten
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()')
Speichern Sie die extrahierten Daten in einer CSV-Datei zur einfachen Analyse und Speicherung.
# Speichern der Daten in einer CSV-Datei
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)])
Proxys spielen beim Web Scraping eine entscheidende Rolle, vor allem wenn es um die Extraktion von Daten in großem Umfang oder um Websites mit strengen Anti-Bot-Maßnahmen wie YouTube geht. Hier sehen Sie, wie Proxys im Playwright-Skript implementiert sind:
Proxy-Einrichtung:
browser = await playwright.chromium.launch(
headless=True,
proxy={"server": "http://your_proxy_ip:port", "username": "your_username", "password": "your_password"}
)
Vorteile der Verwendung von Proxys:
Diese Implementierung stellt sicher, dass Ihre Scraping-Aktivitäten weniger wahrscheinlich von den Anti-Bot-Mechanismen von YouTube entdeckt und blockiert werden.
Im Folgenden finden Sie den vollständigen Code zum Scrapen von YouTube-Videodaten mit Playwright und lxml, einschließlich der Proxy-Implementierung.
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
# Asynchrone Funktion zur Ausführung von Playwright und zum Extrahieren von Daten
async def run(playwright: Playwright) -> None:
# Starten eines Headless-Browsers mit Proxy-Einstellungen
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()
# Navigieren zur URL des YouTube-Videos
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Nach unten scrollen, um weitere Kommentare zu laden
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Zeit für das Laden zusätzlicher Inhalte gewähren
await page.wait_for_timeout(1000)
# Extrahieren des Seiteninhalts
page_content = await page.content()
# Browser schließen
await context.close()
await browser.close()
# Parsen des HTML-Inhalts
parser = html.fromstring(page_content)
# Extrahieren von Videodaten
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()')
# Speichern der Daten in einer CSV-Datei
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)])
# Ausführen der asynchronen Funktion
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Verwendung von Python, Playwright und lxml zum Scrapen verschiedener YouTube-Videodaten, einschließlich Kommentaren. Dazu werden Proxys verwendet und Code ausgeführt, der das Verhalten von Browsern simuliert, um dynamische Daten effektiv zu scrapen und gleichzeitig die besten Praktiken beim Scraping zu befolgen. Wenn Sie Informationen für die Analyse oder die Erstellung von Datensätzen benötigen, helfen Ihnen diese Methoden bei der Überwindung von Schwierigkeiten auf der YouTube-Plattform.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.ru!
Bemerkungen: 0