Come raschiare i dati di Youtube usando Python
Pubblicato: 2019-05-29YouTube è emerso come il chiaro vincitore quando si tratta di siti Web di condivisione di video e, sebbene si dice che abbia un valore di oltre $ 160 miliardi, anche il numero di persone che si guadagnano da vivere attraverso il sito Web è enorme. Questi creatori di contenuti aderiscono al programma di partnership di YouTube e monetizzando i loro contenuti guadagnano un sacco di soldi attraverso la pubblicità.
Perché raccogliere dati da Youtube?
I dati di YouTube possono essere utili per un'ampia gamma di casi d'uso, come ad esempio:
1. Trova le parole chiave più apprezzate
Supponiamo di eseguire una ricerca per trovare i migliori video visualizzati su YouTube per alcune parole particolari. Ora, se elimini i Mi piace, i Non mi piace, le visualizzazioni e i titoli di ciascuno di quei video, saresti in grado di creare un elenco di parole chiave che, se inserite nei titoli di YouTube, possono portare a migliori entrate.
2. Confronta gli hashtag
Confrontando i Mi piace e le visualizzazioni sui video con determinati hashtag, puoi avere un'idea migliore di quali hashtag utilizzare sul tuo video per renderlo più popolare o per capire quali hashtag si adattano meglio al titolo del tuo video.
3. Trova i canali più popolari
L'estrazione dei video principali su YouTube può aiutarti a creare un grafico della frequenza dei nomi dei canali che si verificano, consentendoti così di trovare i canali principali che piacciono alle persone. Questo, a sua volta, ti aiuterebbe anche a capire quali argomenti sono più popolari tra gli spettatori di YouTube.
4. Tenere traccia della popolarità dei canali
Estraendo i dati dei video appena caricati di uno specifico canale YouTube, sarai in grado di scoprire se la popolarità di un canale sta aumentando o diminuendo, oppure è stagnante.
5. Registrazione di Mi piace, Non mi piace e visualizzazioni sui video
Puoi creare un grafico con il tempo sull'asse x e Mi piace, Non mi piace o visualizzazioni sull'asse y, raschiando i dati da quei video a intervalli di tempo regolari.
Iniziamo con il codice:
Poiché abbiamo già spiegato il processo di installazione e inizializzazione nei precedenti articoli "Come estrarre i dati da" come questo , speriamo che tu sia pronto con questi passaggi completati.
Per eseguire il codice, usa il comando python e quindi inserisci l'URL di un video di YouTube quando richiesto.

Copia il codice riportato di seguito in un file e denominalo come youtubeDataExtractor.py (anche se potresti effettivamente dargli qualsiasi nome di file, purché termini con '.py').
[lingua del codice =”python”]
#!/usr/bin/python
# -*- codifica: utf-8 -*-
import urllib.request
importa urllib.parse
import urllib.error
da bs4 importa BeautifulSoup
importazione ssl
importa json
importare ast
importa json
importare os
da urllib.request import Request, urlopen
# Per ignorare gli errori del certificato SSL
ctx = ssl.create_default_context()
ctx.check_hostname = Falso
ctx.verify_mode = ssl.CERT_NONE
# Input dall'utente
url = input('Enter Youtube Video Url-')
# Far credere al sito Web che stai accedendo utilizzando un browser mozilla
req = Richiesta(url, headers={'User-Agent': 'Mozilla/5.0'})
pagina web = urlopen(req).read()
# Creazione di un oggetto BeautifulSoup della pagina html per una facile estrazione dei dati.
zuppa = BeautifulSoup(pagina web, 'html.parser')
html = zuppa.pretify('utf-8')
dettagli_video = {}
altri_dettagli = {}
for span in soup.findAll('span',attrs={'class': 'watch-title'}):
video_details['TITLE'] = span.text.strip()
for script in soup.findAll('script',attrs={'type': 'application/ld+json'}):
channelDesctiption = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = channelDesctiption['itemListElement'][0]['item']['name']
for div in soup.findAll('div',attrs={'class': 'watch-view-count'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()
for button in soup.findAll('button',attrs={'title': 'Mi piace'}):
video_details['MI PIACE'] = button.text.strip()
for button in soup.findAll('button',attrs={'title': 'Non mi piace'}):
video_details['NON MI PIACE'] = button.text.strip()
for span in soup.findAll('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()
hashtag = []
for span in soup.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'}):
for a in span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
hashtags.append(a.text.strip())
video_details['HASH_TAGS'] = hashtag

con open('output_file.html', 'wb') come file:
file.scrivi(html)
con open('data.json', 'w', encoding='utf8') come outfile:
json.dump(video_details, outfile, sure_ascii=False,indent=4)
print ('———-L'estrazione dei dati è completa. Controlla il file json.———-')
[/codice]
Una volta eseguito il codice, troverai un JSON creato nella tua directory corrente, con il nome data.json. Abbiamo eseguito il codice per alcuni video musicali popolari ed ecco i JSON ad essi associati-
1. Thunder di Imagine Dragons –
[lingua del codice =”python”]
{
“TITOLO”: “Imagine Dragons – Thunder”,
“CHANNEL_NAME”: “ImagineDragonsVEVO”,
"NUMBER_OF_VIEWS": "1.182.556.781 visualizzazioni",
“MI PIACE”: “6.693.559”,
“NON MI PIACE”: “337.823”,
"NUMERO_DI_ABBONAMENTI": "17M",
"HASH_TAGS": []
}
[/codice]
2. Nei tuoi sentimenti di Drake
[lingua del codice =”python”]
{
“TITLE”: “Drake – In My Feelings (Testi, Audio) “Kiki Do you love me””,
"CHANNEL_NAME": "Unità speciale",
"NUMBER_OF_VIEWS": "278.121.686 visualizzazioni",
“MI PIACE”: “2.407.688”,
“NON MI PIACE”: “114.933”,
"NUMERO_DI_ ABBONAMENTO": "614K",
"HASH_TAGS": [
“#InMyFeelings”,
“#Drake”,
“#Scorpione”
]
}
[/codice]
Il codice del crawler di YouTube spiegava:
Come al solito, prima estraiamo il codice HTML dalla pagina Web e lo salviamo in un file nella nostra directory locale, in modo da poterlo analizzare e trovare i punti dati che possono essere estratti facilmente e che sarebbero anche preziosi. La maggior parte dello studio per i punti dati nella pagina HTML deve essere eseguita manualmente, cercando parole chiave o valori specifici e trovando dove si verificano.
Abbiamo usato BeautifulSoup (BS4) per estrarre dati da luoghi specifici nel codice HTML-
- L'elemento di tipo span con classe come 'watch-title' è dove puoi trovare il titolo del video.
- L'elemento script che ha un tipo di 'application/ld+json' contiene il nome del canale.
- L'elemento div con il conteggio delle visualizzazioni della classe ti aiuterebbe a ottenere il numero di visualizzazioni di quel particolare video di YouTube.
- L'elemento pulsante con il titolo 'Mi piace' ha il conteggio del numero di Mi piace su quel particolare video.
- Simile al punto precedente, l'elemento pulsante con il titolo "Non mi piace", ha il conteggio del numero di Non mi piace su un particolare video.
- L'elemento span con classe 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' è uno da cui puoi estrarre il numero di iscritti al canale che ha caricato quel particolare video.
- Trovare gli hashtag associati a un determinato video è leggermente più complicato rispetto agli altri punti dati. Innanzitutto, devi estrarre tutti gli intervalli con la classe 'standalone-collection-badge-renderer-text', e da lì devi estrarre tutti gli a-tag con class-'yt-uix-sessionlink'. Estraendo il testo in tutti gli a-tag, in un array, sarai in grado di creare un elenco di hashtag. Questo array può essere aggiunto al risultato json sotto una chiave particolare chiamata 'HASH_TAGS', al fine di ottenere le informazioni in un formato strutturato nel risultato finale json.
Quali punti dati puoi recuperare da Youtube?
Usando il codice sopra indicato, puoi raschiare determinati punti dati da qualsiasi video di YouTube, purché tu possieda il loro URL. Solo il campo hashtag può essere assente in alcuni video poiché non è un campo obbligatorio nelle pagine video di YouTube. I punti dati che possono essere raschiati sono i seguenti:
TITOLO
Il punto dati più importante è quello che stiamo estraendo all'inizio. Il titolo del video contiene molte informazioni ed è della massima importanza, senza le quali tutti gli altri punti dati non avrebbero alcun senso.
NOME DEL CANALE
Subito dopo il titolo, il nome del canale è importante per associare il titolo al creatore, ovvero chi ha creato il contenuto. Su YouTube, i video sono associati ai nomi dei loro canali e non ai loro creatori perché in molti casi più di una persona lavora sui video di un singolo canale.
NUMERO DI VISUALIZZAZIONI
La metrica più semplice per comprendere la copertura di un video è trovare il numero di visualizzazioni che ha ricevuto. Questa è anche la metrica più importante associata a un video di YouTube e, in molti modi, determina quante entrate realizzerà il creatore del video.
PIACE
I Mi piace su un video di YouTube sono semplicemente la percentuale di spettatori che hanno apprezzato il video abbastanza da fare effettivamente clic sul pulsante del pollice in su sotto un video.
NON MI PIACE
Simile al punto dati sopra, il numero di Non mi piace determinerebbe il numero di clic sul pulsante Non mi piace per un video.
NUMERO DI ABBONAMENTI
Mentre i Mi piace, i Non mi piace e le visualizzazioni dipingono un quadro della popolarità di un singolo video di YouTube, il numero di iscrizioni dà un'idea più precisa di quanto sia popolare il canale YouTube. Per i canali YouTube, non abbiamo altre metriche. Il numero di iscrizioni è l'unico dato unico e più è alto, più popolare è il canale YouTube in questione.
HASHTAG
Gli hashtag sono diventati un modo popolare per rendere i tuoi contenuti ricercabili con diversi mezzi. Che si tratti di post di Facebook o di immagini di Instagram, oggi le persone utilizzano hashtag con diversi tipi di contenuti online in modo che diversi tipi di contenuti possano essere associati insieme. Questo è il motivo per cui gli "hashtag di tendenza" sono una cosa oggi.
Conclusione
Sebbene il codice fornito possa estrarre solo alcuni punti dati specifici da una pagina video di YouTube, l'esplorazione di pagine HTML da diverse pagine YouTube può aiutarti a trovare più punti dati che si verificano sotto elementi HTML simili. Il web scraping non ha regole rigide e veloci poiché i siti Web stessi continuano a cambiare. Quindi, imparare quali dati raschiare e come raschiare è qualcosa che può essere raccolto solo dall'esperienza raschiando diverse pagine Web con diversi formati di dati.
Hai bisogno di aiuto con l'estrazione dei dati web?
Ottieni dati puliti e pronti per l'uso da siti Web per applicazioni aziendali tramite i nostri servizi di scraping web.
Ops! Non siamo riusciti a individuare il tuo modulo.
Dichiarazione di non responsabilità: il codice fornito in questo tutorial è solo a scopo didattico. Non siamo responsabili per come viene utilizzato e non ci assumiamo alcuna responsabilità per qualsiasi utilizzo dannoso del codice sorgente.
