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.