L'extraction de données de YouTube peut s'avérer difficile en raison de son contenu dynamique et des mesures anti-scraping. Cependant, avec les bons outils et les bonnes techniques, vous pouvez extraire efficacement des informations utiles. Dans cet article, nous allons vous guider à travers le processus de récupération des données vidéo de YouTube à l'aide de Python, Playwright et lxml.
Installez les bibliothèques nécessaires à l'aide de pip :
pip install playwright
pip install lxml
Installez les binaires du navigateur Playwright :
playwright install
Pour installer les binaires du navigateur Chromium, utilisez la commande suivante :
playwright install chromium
Pour le web scraping de données YouTube avec Python, vous aurez principalement besoin des bibliothèques suivantes :
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
Lancez un navigateur sans tête avec Playwright, naviguez jusqu'à l'URL de la vidéo YouTube et attendez le chargement complet de la page.
Faites défiler la page pour afficher d'autres commentaires.
browser = await playwright.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()
# Naviguer vers l'URL de la vidéo YouTube
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Défiler vers le bas pour lire d'autres commentaires
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Donner un peu de temps pour le chargement du contenu supplémentaire
await page.wait_for_timeout(1000)
Extraire le contenu HTML de la page à l'aide de Playwright et l'analyser avec lxml.
# Extraction du contenu de la page
page_content = await page.content()
# Analyse du contenu HTML
parser = html.fromstring(page_content)
Extrayez les points de données requis (par exemple, titre, canal, commentaires) à l'aide d'expressions XPath.
Collectez toutes les données pertinentes, y compris les métadonnées vidéo et les commentaires.
# Extraction de données vidéo
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()')
Enregistrez les données extraites dans un fichier CSV pour faciliter l'analyse et le stockage.
# Enregistrement des données dans un fichier 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)])
Les proxys jouent un rôle crucial dans le web scraping, en particulier lorsqu'il s'agit d'extraction de données à grande échelle ou de sites avec des mesures anti-bots strictes comme YouTube. Voici comment les proxys sont mis en œuvre dans le script Playwright :
Configuration du proxy :
browser = await playwright.chromium.launch(
headless=True,
proxy={"server": "http://your_proxy_ip:port", "username": "your_username", "password": "your_password"}
)
Avantages de l'utilisation des mandataires :
Cette mise en œuvre garantit que vos activités de scraping sont moins susceptibles d'être détectées et bloquées par les mécanismes anti-bots de YouTube.
Vous trouverez ci-dessous le code complet pour récupérer les données vidéo de YouTube à l'aide de Playwright et de lxml, y compris la mise en œuvre du proxy.
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
# Fonction asynchrone pour exécuter Playwright et extraire les données
async def run(playwright: Playwright) -> None:
# Lancement d'un navigateur sans tête avec des paramètres de proxy
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()
# Naviguer vers l'URL de la vidéo YouTube
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Défiler vers le bas pour lire d'autres commentaires
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Donner un peu de temps pour le chargement du contenu supplémentaire
await page.wait_for_timeout(1000)
# Extraction du contenu de la page
page_content = await page.content()
# Fermeture du navigateur
await context.close()
await browser.close()
# Analyse du contenu HTML
parser = html.fromstring(page_content)
# Extraction de données vidéo
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()')
# Enregistrement des données dans un fichier 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)])
# Exécution de la fonction asynchrone
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Voici un tutoriel étape par étape sur l'utilisation de Python, Playwright, et lxml pour récupérer diverses données de vidéos YouTube, y compris les commentaires. Pour ce faire, on utilise des proxys et on exécute du code pour simuler le comportement des navigateurs afin de récupérer des données dynamiques de manière efficace tout en respectant les meilleures pratiques en matière de récupération. Si vous avez besoin d'informations à des fins d'analyse ou pour créer des ensembles de données, ces méthodes vous aideront à surmonter les difficultés rencontrées sur la plateforme YouTube.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commentaires: 0