Lo scraping di dati da YouTube può essere impegnativo a causa del suo contenuto dinamico e delle misure anti-scraping. Tuttavia, con gli strumenti e le tecniche giuste, è possibile estrarre in modo efficiente informazioni utili. In questo articolo vi illustreremo il processo di scraping dei dati video di YouTube utilizzando Python, Playwright e lxml.
Installare le librerie necessarie utilizzando pip:
pip install playwright
pip install lxml
Installare i binari del browser Playwright:
playwright install
Per installare semplicemente i binari del browser Chromium, utilizzare il seguente comando:
playwright install chromium
Per il web scraping dei dati di YouTube con Python, sono necessarie principalmente le seguenti librerie:
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
Avviare un browser headless con Playwright, navigare verso l'URL del video di YouTube e attendere il caricamento completo della pagina.
Scorrere la pagina per caricare altri commenti.
browser = await playwright.chromium.launch(headless=True)
context = await browser.new_context()
page = await context.new_page()
# Navigazione verso l'URL del video di YouTube
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Scorrere verso il basso per caricare altri commenti
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Dare un po' di tempo per il caricamento dei contenuti aggiuntivi
await page.wait_for_timeout(1000)
Estrarre il contenuto HTML della pagina con Playwright e analizzarlo con lxml.
# Estrazione del contenuto della pagina
page_content = await page.content()
# Parsing del contenuto HTML
parser = html.fromstring(page_content)
Estrarre i dati richiesti (ad esempio, titolo, canale, commenti) utilizzando le espressioni XPath.
Raccogliere tutti i dati rilevanti, compresi i metadati del video e i commenti.
# Estrazione dei dati video
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()')
Salvare i dati estratti in un file CSV per facilitarne l'analisi e l'archiviazione.
# Salvataggio dei dati in un file 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)])
I proxy svolgono un ruolo cruciale nello scraping del web, soprattutto quando si tratta di estrazione di dati su larga scala o di siti con severe misure anti-bot come YouTube. Ecco come vengono implementati i proxy nello script di Playwright:
Impostazione del proxy:
browser = await playwright.chromium.launch(
headless=True,
proxy={"server": "http://your_proxy_ip:port", "username": "your_username", "password": "your_password"}
)
Vantaggi dell'uso dei proxy:
Questa implementazione garantisce che le attività di scraping abbiano meno probabilità di essere rilevate e bloccate dai meccanismi anti-bot di YouTube.
Di seguito è riportato il codice completo per lo scraping dei dati video di YouTube utilizzando Playwright e lxml, compresa l'implementazione del proxy.
import asyncio
from playwright.async_api import Playwright, async_playwright
from lxml import html
import csv
# Funzione asincrona per eseguire Playwright ed estrarre i dati
async def run(playwright: Playwright) -> None:
# Avvio del browser headless con le impostazioni del 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()
# Navigazione verso l'URL del video di YouTube
await page.goto("https://www.youtube.com/watch?v=Ct8Gxo8StBU", wait_until="networkidle")
# Scorrere verso il basso per caricare altri commenti
for _ in range(20):
await page.mouse.wheel(0, 200)
await asyncio.sleep(0.2)
# Dare un po' di tempo per il caricamento dei contenuti aggiuntivi
await page.wait_for_timeout(1000)
# Estrazione del contenuto della pagina
page_content = await page.content()
# Chiusura del browser
await context.close()
await browser.close()
# Parsing del contenuto HTML
parser = html.fromstring(page_content)
# Estrazione dei dati video
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()')
# Salvataggio dei dati in un file 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)])
# Esecuzione della funzione asincrona
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
Ecco un tutorial passo passo sull'uso di Python, Playwright e lxml per lo scraping di vari dati di video di YouTube, compresi i commenti. Ciò avviene utilizzando dei proxy ed eseguendo del codice per simulare il comportamento dei browser, al fine di eseguire lo scraping di dati dinamici in modo efficace e rispettando le migliori pratiche di scraping. Se avete bisogno di informazioni per l'analisi o per creare insiemi di dati, questi metodi vi aiuteranno a superare le difficoltà incontrate sulla piattaforma YouTube.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commenti: 0