Come Fare Web Scraping con Python: Tutorial Pratico

Impara a estrarre dati da siti web con Python e BeautifulSoup, salvandoli in CSV per progetti reali.

Ehi, collega, ti sto raccontando come fare web scraping con python, perché l'ho usato di recente per un lavoro e mi ha salvato ore. Immagina di dover raccogliere dati da un sito pieno di annunci, senza dover copiare a mano. È una figata, ma all'inizio mi ha fatto sudare.

Il punto è che con python puoi automatizzare tutto questo, estraendo info come titoli o prezzi in un batter d'occhio. Ma la fregatura è che se non gestisci bene, rischi di farti bloccare dal sito. Oggi vediamo come costruirne uno base.

Quello che costruiamo è uno scraper che prende titoli da un sito di notizie e li salva in un file CSV. Semplice, diretto, e utile per iniziare.

Prima di tuffarci, i prerequisiti: hai bisogno di Python installato sul tuo PC, magari la versione 3.8 o superiore, e un po' di librerie. Niente di complicato, ma se non ce le hai, è un attimo. E, sul serio, usa un editor come VS Code, che è comodo come una birra fredda.

Come fare web scraping con Python: Installa le basi

Ok, ma partiamo dall'inizio. Apri il terminale e scrivi: pip install requests beautifulsoup4. Io preferisco requests perché è leggero e veloce, a differenza di altre robe che ho provato e che fanno schifo per i principianti.

Adesso, creiamo un file Python, tipo scraper.py. E qui viene il bello.

Passo 1: Importa le cose necessarie

Ma prima di codare, importiamo le librerie. Nel file, scrivi: import requests; from bs4 import BeautifulSoup; import csv. È basilico, come il sale in cucina. L'ultima volta che ho deployato senza testarmi le import, mi sono giocato il weekend a debuggare errori stupidi.

Questo ti permette di fare richieste HTTP e parseare HTML. E, fidati, BeautifulSoup è il mio preferito perché rende tutto umano, non come quelle librerie che ti complicano la vita.

Come fare web scraping con Python: Fai la richiesta al sito

Ora, pensiamo al sito. Usiamo qualcosa di pubblico, tipo un feed di notizie, ma attenzione, non spammare siti sensibili. Scrivi questo codice: url = 'https://esempio.com'; response = requests.get(url). Se va bene, response.status_code dovrebbe essere 200, altrimenti è un casino.

E qui, una digressione: una volta ho provato a scrapeare un sito senza checkare lo status, e boom, errori ovunque. Impara dai miei sbagli.

Poi, parsea il contenuto: soup = BeautifulSoup(response.content, 'html.parser'). È magico, trasforma quell'HTML in qualcosa di navigabile. Frasi corte come questa aiutano, no?

Passo 2: Estrai i dati che ti servono

Ok, ma andiamo al succo. Supponi di volere i titoli degli articoli. Nel soup, cerca con soup.find_all('h2', class_='titolo'). Questo restituisce una lista di elementi.

Per ogni elemento, estrai il testo: for item in soup.find_all('h2', class_='titolo'): titolo = item.get_text(). È una frase lunga, ma necessaria per spiegare. Poi, salva in una lista o direttamente in CSV.

Io preferisco usare CSV perché è facile da aprire in Excel, a differenza di JSON che ho provato e che fa schifo per dati tabellari.

Passo 3: Salva i dati in CSV

E adesso, il gran finale. Apri un file CSV e scrivi: with open('dati.csv', 'w', newline='') as file: writer = csv.writer(file); writer.writerow(['Titolo']); for item in titoli: writer.writerow([item]).

Vedi? È straightforward. Ma ricorda, varia le richieste se scrapi tanto, altrimenti ti bloccano.

Ecco un esempio completo di codice per chiarire: import requests from bs4 import BeautifulSoup import csv

url = 'https://esempio.com' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') titoli = [item.get_text() for item in soup.find_all('h2', class_='titolo')]

with open('dati.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['Titolo']) for titolo in titoli: writer.writerow([titolo])

Provalo tu stesso, e se sbagli, non ti preoccupare, è come imparare a guidare.

Alla fine, come fare web scraping con python ti apre un mondo, ma usalo eticamente. E se hai dubbi, chiedi pure, come al bar.

Ti serve una soluzione simile?

Descrivimi il problema. Ne parliamo in una call gratuita di 30 minuti.

Contattami
← Torna al blog