Il termine web scraping è comunemente trovato nel vocabolario di chi sviluppa sul web o analizza dati professionalmente. Esso fa riferimento alle attività volte a raccogliere, organizzare e memorizzare informazioni presenti sul web in maniera automatica attraverso l'utilizzo di script o software specializzato.
L'insieme delle tecniche usate nel web scraping consente agli sviluppatori di raccogliere in modo efficiente grandi quantità di informazioni da Internet, la cui raccolta manuale richiederebbe altrimenti ore o giorni.
Il processo, in genere, comporta l'accesso a una pagina web, l'estrazione del suo contenuto (come testo, immagini o altri dati) e l'organizzazione di tali dati in un formato strutturato, come un foglio Excel o un database. Ciò consente l'analisi, la creazione di report o l'integrazione in applicazioni.
In questo articolo imparerai le basi del web scraping moderno in Python, un linguaggio di programmazione ampiamente utilizzato sia da chi sviluppa sul web che da chi analizza dati.
A fine articolo avrai imparato le seguenti nozioni:
- cos'è il web scraping e perché è una attività fondamentale da conoscere per chi lavora con i dati
- perché utilizzare Python per farlo
- come usare le librerie requests e beautifulsoup per fare web scraping
Iniziamo.
Cos'è il web scraping e perché è utile?
Abbiamo già definito a grandi linee cos'è il web scraping nell’introduzione. Ora andremo un po' più in profondità, parlando delle motivazioni alla base di questa attività.
Il web scraping è alla base di ciò che è l'internet di oggi. Senza di esso, tu non staresti nemmeno leggendo questo articolo.
In che senso? Te lo spiego con un esempio concreto.
Poniamo che cerchiamo su Google la frase "cos'è web scraping" perché siamo interessati a capirne di più sull'argomento.
Quando digiti questa frase su Google, il motore di ricerca non fa altro che restituire una lista di risultati, ovvero pagine web che contengono informazioni pertinenti alla tua domanda. Ma come fa Google a sapere quali pagine mostrarti?
Perché Google fa web scraping. E lo fa in scala, in maniera massiva, da coprire quasi tutto l'internet. I motori di ricerca utilizzano crawler o spider, che sono programmi automatici capaci di visitare miliardi di pagine web, estrarre contenuti rilevanti (testo, titoli, link, ecc.) e indicizzarli in un gigantesco database.
Grazie a questa attività, quando cerchi qualcosa online, puoi ottenere risultati in linea con la tua ricerca. Il web scraping è quindi un pilastro del funzionamento di internet e rappresenta anche uno strumento fondamentale per chiunque voglia raccogliere dati per ricerche, analisi di mercato, o per costruire applicazioni innovative.
Ma non si limita ai motori di ricerca. Ad esempio, immagina un'azienda che voglia confrontare i prezzi dei suoi prodotti con quelli della concorrenza: può utilizzare il web scraping per raccogliere i prezzi dai siti rivali e analizzare i dati per rimanere competitiva.
Espandendo quindi l'introduzione, il web scraping è ovunque: dai motori di ricerca, agli e-commerce, fino ai social network. È un'insieme di metodiche invisibili ai non addetti ai lavori ma potenti che consentono di trasformare il caos dei dati del web in informazioni utili.
Python per fare web scraping
Come menzionato, Python è uno degli strumenti più popolari per chi sviluppa e analizza dati. È infatti chi lavora con i dati che dovrebbe essere interessato a imparare il web scraping, e Python aiuta in questo offrendo delle librerie semplici e flessibili per eseguire questo compito.
Ecco alcune motivazioni del perché Python è un'ottima scelta per fare web scraping:
- Facilità d'uso: python è noto per la sua sintassi leggibile, che lo rende ideale per progetti di web scraping, anche per chi non è esperto di programmazione. Infatti ti basterà partire da questo articolo per poter facilmente raccogliere dei dati dal web.
- Flessibilità: con Python puoi estrarre dati da pagine web statiche, dinamiche e persino interagire con contenuti come moduli e pulsanti grazie a delle librerie che emulano il browser come Playwright.
- Community e supporto: la grande community di sviluppatori Python permette che tu possa trtovare sempre documentazione, tutorial e soluzioni ai problemi comuni.
Se vuoi muovere i tuoi primi passi con Python e comprendere di più il mondo dei dati, ti suggerisco di leggere un mio articolo dedicato a chi inizia, che spiega come installare, attivare e usare un ambiente virtuale in Python per poter iniziare subito a sviluppare:
Oltre ai punti indicati sopra, avere dimestichezza con Python ti permette anche di organizzare e memorizzare facilmente i dati raccolti grazie librerie come Pydantic e strumenti come SQLite.
Web scraping in Python: applicazione pratica
Ora vedremo come fare scraping di siti web reali con Python. Una nota: prima di imbarcarci a fare web scraping in maniera indiscriminata, facciamo sempre una accurata ricerca sul sito di interesse. Alcuni siti proibiscono lo scraping! Agiamo in maniera responsabile ed evitiamo di infrangere le regole che solitamente è possibile trovare nei termini di utilizzo dei siti web.
Per questo esempio pratico di web scraping utilizzeremo il sito QuotestoScrape creato appositamente per essere scraperato a fini educazionali.
Quando si parla di web scraping, è importante distinguere tra contenuti statici e contenuti dinamici, poiché il metodo per estrarre i dati varia in base a come vengono generati e mostrati sul sito web.
Contenuti statici
I contenuti statici sono quelli caricati direttamente nel codice HTML di una pagina web quando questa viene richiesta. Non richiedono ulteriori interazioni per essere visualizzati e possono essere facilmente estratti utilizzando librerie come Requests.
- Sono visibili nel codice sorgente della pagina (visualizzabile con "Ispeziona elemento" nel browser).
- Non richiedono JavaScript o interazioni aggiuntive per essere caricati.
- Esempi: siti semplici, pagine informative, articoli di blog.
Un semplice scraper può accedere a queste informazioni senza problemi.
Contenuti dinamici
I contenuti dinamici, invece, vengono generati o caricati dopo l'iniziale caricamento della pagina. Spesso sono gestiti da JavaScript, che invia richieste al server (chiamate API) per ottenere i dati e li visualizza nella pagina.
Caratteristiche dei contenuti dinamici:
- Non sono immediatamente visibili nel codice sorgente della pagina.
- Richiedono l'esecuzione di script JavaScript per essere caricati.
In una pagina e-commerce, ad esempio, i prodotti potrebbero essere caricati solo dopo uno scorrimento verso il basso o in seguito all'esecuzione di uno script.
I contenuti dinamici non possono essere scraperati con un approccio “semplice” come quello per i contenuti statici, ma richiedono tecniche di emulazione del browser.
Utilizzo di requests per estrarre le citazioni
Requests è una libreria Python molto popolare per lavorare con il protocollo HTTP. È famosa per la sua semplicità e flessibilità, rendendola perfetta per chi vuole iniziare con il web scraping su siti statici.
Con requests, puoi inviare richieste HTTP (GET, POST, ecc.) a un sito web, ricevere il suo contenuto HTML e, con l'aiuto di librerie come BeautifulSoup, analizzarlo per estrarre informazioni utili.
Passaggi per utilizzare requests nel web scraping
- Inviare una richiesta HTTP: richiedi il contenuto HTML della pagina.
- Verificare il successo della richiesta: controlla il codice di stato della risposta.
- Analizzare il contenuto HTML: usa una libreria come BeautifulSoup per cercare elementi specifici (come titoli, citazioni o immagini).
Ecco un esempio di come estrarre le citazioni dal sito web QuotestoScrape in Python.
Una volta eseguito questo script ritroviamo:
- “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” - Albert Einstein
- “It is our choices, Harry, that show what we truly are, far more than our abilities.” - J.K. Rowling
- “There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.” - Albert Einstein
- “The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.” - Jane Austen
Abbiamo correttamente fatto web scraping in Python! Ti consiglio di leggere la documentazione di BeautifulSoup a questo link:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Per comprendere più a fondo cosa significano i metodi utilizzati in quello script.
Conclusioni
Il web scraping è una tecnica essenziale per raccogliere e organizzare i dati presenti sul web in modo automatizzato, trasformando il caos delle informazioni online in risorse utili e strutturate.
In questo articolo abbiamo visto come utilizzare requests per inviare richieste HTTP e scaricare i contenuti di una pagina web, e come BeautifulSoup consenta di analizzare e navigare il codice HTML per estrarre elementi specifici, come citazioni e autori.
Nonostante l'efficacia di queste tecnologie, è importante ricordare sempre gli aspetti etici e legali legati al web scraping. Rispetta i termini di servizio del sito e le normative sulla privacy per garantire un utilizzo responsabile e trasparente.
Questa introduzione rappresenta il punto di partenza ideale per chi vuole esplorare il potenziale del web come fonte di dati. Ora hai gli strumenti per iniziare a raccogliere dati e trasformarli in valore per i tuoi progetti.
Se vuoi approfondire in maniera più strutturata il mondo dell’analisi dati puoi dare un’occhiata al nostro Master in Business Data Analysis.