1. Caricamento e parsing di documenti HTML
Breve panoramica delle funzionalità
La libreria requests è il nostro "messaggero", che parte per il viaggio alla ricerca del codice HTML delle pagine web. Fa richieste HTTP e consegna le pagine, quasi come un fattorino della pizza, ma senza "Margherita" e scatole.
BeautifulSoup, invece, è il nostro "cuoco", che con facilità smonta l'HTML ricevuto nei suoi ingredienti (tag, attributi e testo), così possiamo utilizzarli. Ti aiuterà a trovare gli elementi necessari e a salvare tutte le informazioni importanti.
Utilizzo della libreria requests
Ora siamo pronti per fare la nostra prima richiesta HTTP e ottenere il codice HTML di una pagina. Facciamo pratica caricando la pagina example.com. Questo sito è un vero dinosauro di Internet e perfetto per iniziare.
import requests
url = 'http://example.com'
response = requests.get(url)
# Verifichiamo che tutto sia a posto
if response.status_code == 200:
print("Pagina caricata con successo!")
else:
print("Qualcosa è andato storto. Codice errore:", response.status_code)
Questo programma invierà una richiesta all'URL e restituirà un messaggio di successo o un errore a seconda della risposta. Se tutto va bene, avremo in mano il codice HTML della pagina in formato testo.
Gestione dei codici di errore
Se automatizzi il parsing, ti capiterà spesso che la pagina che dovrebbe essere caricata non lo sia. Quindi l'analisi dei codici di errore è una parte essenziale del progetto che esegue il parsing di più di qualche pagina.
Questo accade perché i proprietari dei siti non apprezzano che si esegua il parsing dei loro dati. Innanzitutto, è un carico per il sito (quando vengono parse migliaia di pagine contemporaneamente). In secondo luogo, sono i loro dati e ci guadagnano. Esistono molti modi per contrastare il parsing: CAPCHA, CloudFlare e simili.
Per un'azienda è l'ideale poter fare il parsing di tutti i suoi concorrenti senza che nessuno possa farlo con lei. Una sorta di guerra fredda.
Utilizzo di BeautifulSoup per il parsing di HTML
Dopo aver ottenuto il codice HTML, possiamo iniziare ad analizzarlo con BeautifulSoup. È come aprire un libro e leggerne il contenuto:
from bs4 import BeautifulSoup
# Passiamo il contenuto del codice HTML a BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Vediamo cosa c'è dentro
print(soup.prettify())
Il metodo prettify() formatta in modo chiaro il codice HTML, così puoi analizzarlo. Nella prossima lezione, inizieremo a scavare in questo HTML come bambini che giocano nella sabbiera. E torneremo a casa stanchi, sporchi, ma felici :)
3. Pratica: caricamento e analisi di HTML
Per consolidare la comprensione, facciamo un esercizio pratico. Cercheremo di estrarre il titolo e la descrizione dalla pagina example.com. Per farlo utilizzeremo le nostre conoscenze di HTML e le nuove conoscenze di BeautifulSoup.
Estrazione dei dati
# Estrazione del titolo della pagina
title = soup.title.string
print("Titolo della pagina:", title)
# Estrazione del titolo principale (h1)
main_heading = soup.h1.string
print("Titolo principale:", main_heading)
# Estrazione del contenuto testuale del paragrafo
paragraph = soup.find('p').text
print("Primo paragrafo:", paragraph)
In questo esempio utilizziamo gli attributi title, h1, e il metodo find(), per estrarre i pezzi di informazione necessari dalla pagina. Diventiamo detective informatici che esaminano le tracce sulla scena del crimine!
4. Errori tipici
Sicuramente, durante il lavoro con il web scraping ti imbatterai in errori tipici, che possono includere la gestione errata delle richieste HTTP, l'estrazione incorretta dei dati o errori di parsing HTML. Lo sviluppo di script stabili e affidabili richiede pazienza e pratica. Ad esempio, verifica sempre il codice di stato (response.status_code) per essere sicuro che la tua richiesta sia stata completata con successo. Un utilizzo scorretto dei metodi find() e find_all() può causare errori se non si tiene conto della struttura delle pagine HTML. Analizza sempre l'HTML prima di iniziare il parsing.
Il web scraping ha molte applicazioni pratiche: dalla raccolta di dati per analisi al monitoraggio automatico dei prezzi dei prodotti. Queste conoscenze possono essere utili nei colloqui, dove potrebbero chiederti un esempio del tuo codice progettuale. Nella pratica reale, ad esempio, i marketer utilizzano lo scraping per monitorare i prezzi dei concorrenti e gli sviluppatori per l'integrazione con siti esterni.
Ti torneranno utili le conoscenze sul web scraping anche per l'elaborazione delle informazioni per aggregatori di notizie e sistemi analitici. Potrai automatizzare compiti di routine, creando script che raccolgono dati in modo autonomo da varie fonti. Continuiamo a sviluppare la nostra applicazione virtuale e a sentirci veri maestri del web!
GO TO FULL VERSION