Come usare BeautifulSoup: guida pratica al web scraping in Python

Ultimo aggiornamento il February 2, 2026

Il web scraping ormai non è più solo roba da smanettoni: oggi è una vera marcia in più per chi si occupa di vendite, operations o market research. Con la mole di dati online che cresce a vista d’occhio—dal 2019 al 2023 la produzione globale di dati è schizzata su di quasi il —non stupisce che consideri i dati il vero “motore” delle decisioni. Ma c’è un intoppo: il dice che gestire dati non strutturati (tipo HTML incasinato) è una delle sfide più toste. Ho visto team interi impantanarsi in sessioni infinite di copia-incolla per portare info dai siti ai fogli di calcolo—e fidati, è una tortura.

Ed è qui che BeautifulSoup di Python fa la differenza. In questa guida ti porto passo passo a usare BeautifulSoup per il web scraping, con un esempio pratico che puoi adattare alle tue esigenze. E visto che sono un fan della produttività, ti spiego anche come abbinarlo a , il nostro Estrattore Web AI, per velocizzare tutto e ottenere dati puliti e ordinati—anche se non sei un mago del codice.

Cos’è BeautifulSoup e perché usarlo per il Web Scraping?

beautifulsoup-web-scraping-overview.png Partiamo dalle basi. è una libreria Python che rende facilissimo analizzare documenti HTML e XML. Pensa a lei come a un traduttore: prende il caos di tag di una pagina web e lo trasforma in una struttura ordinata, così puoi trovare, estrarre e manipolare i dati che ti servono in un attimo. Che tu voglia recuperare prezzi da un e-commerce, raccogliere titoli di notizie o estrarre contatti da una directory, BeautifulSoup è lo strumento perfetto per trasformare le pagine web in dati pronti all’uso.

Perché piace così tanto? Prima di tutto, è super accessibile anche per chi è alle prime armi. BeautifulSoup digerisce senza problemi HTML disordinato (e il web ne è pieno), e la sintassi in stile Python ti permette di passare dall’idea al risultato in poche righe. In più, c’è una community enorme: se ti blocchi, basta una googlata e trovi subito la soluzione.

Ecco qualche esempio di cosa puoi farci:

  • Estrarre nomi, prezzi e recensioni di prodotti da pagine e-commerce
  • Raccogliere titoli, autori e date di pubblicazione da siti di news
  • Analizzare tabelle o elenchi (tipo liste di aziende o contatti)
  • Recuperare email o numeri di telefono da siti di annunci
  • Monitorare aggiornamenti (variazioni di prezzo, nuove offerte di lavoro, ecc.)

Se i tuoi dati sono in HTML statico, BeautifulSoup è il tuo asso nella manica per il web scraping.

I vantaggi unici di BeautifulSoup per il Web Scraping

Di librerie Python per il web scraping ce ne sono tante—perché puntare su BeautifulSoup? Ecco cosa la rende speciale:

  • Semplicità: BeautifulSoup è leggera e facilissima da imparare. Non serve impazzire con framework complicati o scrivere tonnellate di codice. Perfetta per lavori veloci o per chi parte da zero.
  • Tolleranza: Gestisce HTML rotto o malformato, una cosa più comune di quanto pensi.
  • Flessibilità: Non sei costretto a seguire schemi rigidi. Basta dargli l’HTML e puoi estrarre quello che vuoi.
  • Integrazione: BeautifulSoup si sposa alla grande con altre librerie Python come requests (per scaricare le pagine), csv (per salvare i dati) e pandas (per analisi più avanzate).

Ecco un confronto con altri strumenti:

StrumentoIdeale perVantaggiSvantaggi
BeautifulSoupAnalisi HTML statico, principiantiSemplice, veloce da configurare, tollerante, flessibileNon adatto a siti ricchi di JavaScript
ScrapyProgetti su larga scala, asincroniPotente, scalabile, crawling integratoCurva di apprendimento più ripida, più configurazione
SeleniumContenuti dinamici/JavaScriptPuò interagire con JS, compilare form, cliccare bottoniPiù lento, pesante, richiede più risorse

Se sei all’inizio o vuoi analizzare al volo pagine statiche, BeautifulSoup è il “coltellino svizzero” del web scraping (). Per siti più tosti o dinamici, puoi abbinarlo a Selenium o Scrapy—ma per partire, BeautifulSoup è la scelta migliore.

Come configurare l’ambiente Python per BeautifulSoup

Pronto a metterti all’opera? Ecco come preparare tutto:

  1. Installa Python: Scarica l’ultima versione da .

  2. Crea un ambiente virtuale (opzionale, ma consigliato):

    1python -m venv venv
    2source venv/bin/activate  # Su Windows: venv\Scripts\activate
  3. Installa BeautifulSoup e le dipendenze:

    1pip install beautifulsoup4 requests lxml html5lib
    • beautifulsoup4: La libreria principale
    • requests: Per scaricare le pagine web
    • lxml o html5lib: Parser HTML più veloci/affidabili
  4. Consigli per risolvere problemi:

    • Se ti esce “pip not found”, prova con pip3 o py -m pip.
    • Su Mac/Linux, magari serve il sudo per i permessi.
    • Su Windows, controlla che Python sia nel PATH.

Per vedere se tutto gira, prova questo mini test:

1from bs4 import BeautifulSoup
2import requests
3html = requests.get("http://example.com").text
4soup = BeautifulSoup(html, "html.parser")
5print(soup.title)

Se vedi <title>Example Domain</title>, sei pronto a partire ().

Esempio pratico: Python Beautiful Soup

Facciamo un esempio concreto. Mettiamo che vuoi estrarre i titoli delle ultime notizie da un sito pubblico. Ecco come si fa:

1. Scarica la pagina web

1import requests
2from bs4 import BeautifulSoup
3url = "https://www.bbc.com/news"
4response = requests.get(url)
5html = response.text

2. Analizza l’HTML

1soup = BeautifulSoup(html, "html.parser")

3. Esamina la struttura HTML

Apri gli Strumenti per sviluppatori del browser (tasto destro → Ispeziona) e cerca i tag che contengono i titoli. Di solito, nei siti di news, i titoli sono in tag <h3> con classi particolari.

Ad esempio, potresti trovare:

1<h3 class="gs-c-promo-heading__title">Titolo Notizia</h3>

4. Estrai i dati

1headlines = soup.find_all("h3", class_="gs-c-promo-heading__title")
2for h in headlines:
3    print(h.get_text(strip=True))

Così stampi tutti i titoli delle notizie della pagina.

5. Salva i dati in CSV

Salviamo i titoli per analisi future:

1import csv
2with open("headlines.csv", "w", newline='', encoding="utf-8") as file:
3    writer = csv.writer(file)
4    writer.writerow(["headline"])
5    for h in headlines:
6        writer.writerow([h.get_text(strip=True)])

Ora hai un file CSV pronto da aprire con Excel o Google Sheets.

Capire la struttura HTML per estrarre dati in modo efficace

Prima di scrivere codice, dai sempre un’occhiata all’HTML della pagina. Ecco come fare:

  1. Apri gli Strumenti per sviluppatori: Tasto destro sulla pagina e scegli “Ispeziona”.
  2. Trova i dati: Passa il mouse sugli elementi per vedere quali tag contengono le info che ti servono (tipo titoli, prezzi, autori).
  3. Annota tag e classi: Cerca identificatori unici come class="product-title" o id="main-content".
  4. Testa i selettori: Usa i metodi .find(), .find_all() o .select() di BeautifulSoup per beccare quegli elementi.

Consiglio: usa soup.prettify() per stampare una versione leggibile dell’HTML nella console Python.

Estrarre e strutturare i dati con BeautifulSoup

Mettiamo che vuoi estrarre sia i titoli che gli autori da una pagina di blog:

1articles = soup.find_all("article")
2data = []
3for article in articles:
4    title = article.find("h2").get_text(strip=True)
5    author = article.find("span", class_="author").get_text(strip=True)
6    data.append({"title": title, "author": author})

Ora hai una lista di dizionari—perfetta per esportare in CSV o per analisi più approfondite.

Vuoi estrarre link, immagini o altri attributi? Ecco come:

1for link in soup.find_all("a"):
2    print(link.get("href"))

Per le immagini:

1for img in soup.find_all("img"):
2    print(img.get("src"))

Salvare i dati estratti: da Python a Excel o CSV

Quando hai i dati pronti, esportarli è un gioco da ragazzi. Ecco come fare con il modulo csv:

1import csv
2with open("articles.csv", "w", newline='', encoding="utf-8") as file:
3    writer = csv.DictWriter(file, fieldnames=["title", "author"])
4    writer.writeheader()
5    for row in data:
6        writer.writerow(row)

Oppure, se preferisci pandas:

1import pandas as pd
2df = pd.DataFrame(data)
3df.to_csv("articles.csv", index=False)
4df.to_excel("articles.xlsx", index=False)

Ricorda di usare sempre la codifica UTF-8 per evitare problemi con caratteri speciali, soprattutto se lavori con dati internazionali.

Caso pratico: estrazione dati da un sito di notizie con BeautifulSoup

Facciamo un esempio concreto: estrarre titoli, autori e date di pubblicazione da un sito di news.

Supponiamo di voler estrarre dati da :

1import requests
2from bs4 import BeautifulSoup
3import csv
4url = "https://edition.cnn.com/world"
5response = requests.get(url)
6soup = BeautifulSoup(response.content, "html.parser")
7articles = soup.find_all("article")
8data = []
9for article in articles:
10    title_tag = article.find("h3")
11    date_tag = article.find("span", class_="date")
12    author_tag = article.find("span", class_="author")
13    title = title_tag.get_text(strip=True) if title_tag else ""
14    date = date_tag.get_text(strip=True) if date_tag else ""
15    author = author_tag.get_text(strip=True) if author_tag else ""
16    data.append({"title": title, "date": date, "author": author})
17with open("cnn_articles.csv", "w", newline='', encoding="utf-8") as file:
18    writer = csv.DictWriter(file, fieldnames=["title", "date", "author"])
19    writer.writeheader()
20    for row in data:
21        writer.writerow(row)

Questo script recupera gli ultimi articoli, estrae titolo, data e autore e li salva in un file CSV. Puoi usare questi dati per monitorare la concorrenza, analizzare trend o fare ricerca sui contenuti—come preferisci.

Migliora il tuo flusso di lavoro: BeautifulSoup e Thunderbit insieme

Vediamo come rendere il web scraping ancora più smart. è un’estensione Chrome Estrattore Web AI che rende l’estrazione dati una passeggiata. Con Thunderbit puoi:

  • Usare “AI Suggerisci Campi”: Thunderbit analizza la pagina e ti suggerisce subito quali dati estrarre—niente più caccia all’HTML o selettori da sistemare.
  • Estrarre dati da sottopagine: Thunderbit segue i link a pagine di dettaglio (tipo schede prodotto o articoli) e arricchisce il dataset con info extra.
  • Esportare all’istante: Manda i dati direttamente su Excel, Google Sheets, Airtable o Notion con un click.
  • Gestire la paginazione: Thunderbit estrae dati da più pagine (anche con scroll infinito).
  • Programmare estrazioni: Imposta task ricorrenti per avere dati sempre freschi.

Ecco il flusso di lavoro ibrido che ti consiglio:

  1. Parti con Thunderbit: Apri il sito che ti interessa, clicca sull’icona Thunderbit e lascia che “AI Suggerisci Campi” trovi le colonne giuste (titolo, autore, data, ecc.).
  2. Esporta i dati: Scarica i risultati in CSV o mandali su Google Sheets.
  3. Usa BeautifulSoup per lavorazioni personalizzate: Se ti serve fare analisi avanzate (pulizia testo, deduplica, unione con altre fonti), carica il CSV in Python e usa BeautifulSoup o pandas per il post-processing.

Così hai il meglio dei due mondi: la velocità e l’intelligenza artificiale di Thunderbit, più la flessibilità di BeautifulSoup per logiche su misura.

Velocità e qualità dei dati: perché usare Thunderbit e BeautifulSoup insieme?

thunderbit-beautifulsoup-data-pipeline.png Perché usare questi strumenti insieme? Ecco cosa ho notato:

  • Velocità: Thunderbit estrae dati da decine di pagine in parallelo (fino a 50 alla volta in cloud), così hai tutto in pochi minuti invece che in ore.
  • Completezza dei dati: L’AI di Thunderbit si adatta ai cambi di layout e riesce a estrarre dati strutturati anche da siti complessi, riducendo il rischio di campi mancanti.
  • Meno errori: Niente più script che si rompono se cambia una classe—l’AI di Thunderbit rianalizza la pagina ogni volta.
  • Post-processing personalizzato: Per esigenze avanzate (filtri, traduzioni, unione di dataset), BeautifulSoup e pandas ti danno il massimo controllo.

Questo mix è perfetto per:

  • Lead generation su larga scala: Usa Thunderbit per raccogliere i dati grezzi, poi BeautifulSoup per pulirli e arricchirli.
  • Monitoraggio prodotti: Thunderbit fa la raccolta massiva, BeautifulSoup ti permette di analizzare trend o trovare anomalie.
  • Raccolta di notizie e contenuti: Raccogli articoli al volo con Thunderbit, poi usa Python per analisi di sentiment o estrazione di keyword.

Risoluzione dei problemi comuni nel web scraping con BeautifulSoup

Il web scraping non è sempre una passeggiata—ecco qualche problema tipico e come risolverlo:

  • Contenuti dinamici: Se un sito carica dati via JavaScript (scroll infinito, AJAX), BeautifulSoup da sola non li vede. Usa Selenium o la modalità browser di Thunderbit in questi casi.
  • Blocchi anti-bot: Alcuni siti bloccano le richieste automatiche. Prova a cambiare User-Agent, aggiungi pause tra le richieste o usa il cloud scraping di Thunderbit per aggirare i blocchi più semplici.
  • Cambi nella struttura HTML: Se lo script smette di funzionare, probabilmente il sito è cambiato. Ispeziona di nuovo la pagina e aggiorna i selettori. L’AI di Thunderbit può aiutarti adattandosi in automatico.
  • Dati mancanti: Controlla sempre che gli elementi esistano prima di chiamare .get_text(). Usa .get() invece di [] per gli attributi, così eviti errori KeyError.
  • Problemi di codifica: Salva i file in UTF-8 per gestire caratteri speciali.

E ricorda sempre di rispettare il robots.txt e i termini d’uso del sito. Fai scraping in modo etico—nessuno sopporta i bot invadenti.

Conclusioni e punti chiave

Il web scraping con BeautifulSoup è una delle skill più utili nell’era dei dati. Ecco cosa ti porti a casa da questa guida su BeautifulSoup:

  • BeautifulSoup è il punto di partenza ideale per analizzare HTML statico ed estrarre dati strutturati con Python.
  • Configurare l’ambiente è semplice—basta installare Python, pip e poche librerie.
  • Ispezionare l’HTML è fondamentale per individuare i dati giusti.
  • Esportare in CSV/Excel rende subito utilizzabili i dati per analisi aziendali.
  • Combinare con Thunderbit ti offre rilevamento automatico dei campi, scraping più veloce ed esportazioni semplificate—perfetto anche per chi non programma.
  • Flussi di lavoro ibridi (Thunderbit per l’estrazione massiva, BeautifulSoup per l’elaborazione personalizzata) garantiscono velocità, qualità e flessibilità.

Se vuoi portare il tuo web scraping al livello successivo, prova entrambi gli strumenti: sperimenta con uno script BeautifulSoup, poi scopri quanto puoi accelerare con . Per altre guide pratiche, dai un’occhiata al .

Buon scraping—che i tuoi dati siano sempre puliti, ordinati e pronti all’uso.

Prova Thunderbit Estrattore Web AI

Domande frequenti

1. Cos’è BeautifulSoup e a cosa serve?
BeautifulSoup è una libreria Python per analizzare documenti HTML e XML. Ti aiuta a estrarre dati dalle pagine web e trasformarli in formati strutturati come liste o tabelle, perfetta per progetti di web scraping.

2. Come si confronta BeautifulSoup con Selenium e Scrapy?
BeautifulSoup è leggera e perfetta per pagine HTML statiche. Selenium è più adatto per siti dinamici pieni di JavaScript, mentre Scrapy è un framework completo per scraping su larga scala e asincrono. BeautifulSoup è la scelta migliore per chi inizia e per lavori veloci.

3. Posso usare BeautifulSoup e Thunderbit insieme?
Certo che sì. Thunderbit può identificare ed estrarre rapidamente i campi dalle pagine web grazie all’AI, e puoi usare BeautifulSoup per lavorazioni personalizzate o analisi più approfondite dei dati esportati.

4. Quali sono le sfide più comuni nel web scraping con BeautifulSoup?
Le difficoltà principali sono la gestione di contenuti dinamici, i blocchi anti-bot e i cambiamenti nella struttura HTML. Le funzioni AI o la modalità browser di Thunderbit possono aiutarti a superare molti di questi ostacoli.

5. Come posso esportare i dati estratti con BeautifulSoup in Excel o CSV?
Puoi usare il modulo csv di Python o la libreria pandas per scrivere i dati estratti in file CSV o Excel. Usa sempre la codifica UTF-8 per gestire caratteri speciali e garantire la compatibilità con i fogli di calcolo.

Vuoi provarlo subito? Scarica l’ e inizia a fare scraping in modo più smart. Per altre guide e consigli, visita il .

Approfondisci

Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Esempio Python beautiful soupTutorial web scraping con BeautifulSoup
Indice dei contenuti

Prova Thunderbit

Estrai lead e altri dati in soli 2 clic. Potenziato dall’AI.

Scarica Thunderbit È gratis
Estrai dati con l’AI
Trasferisci facilmente i dati su Google Sheets, Airtable o Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week