Tutorial Python per il Web Scraping: estrarre dati da un sito web

Ultimo aggiornamento il May 21, 2026

Il web è pieno di dati, e la voglia di estrarli continua a crescere rapidamente — anche se, se vai a cercare un singolo dato di mercato, troverai stime che possono differire anche di un ordine di grandezza, a seconda che l’analista stia contando software, servizi, proxy o tutti e tre. La lettura più onesta è che il web scraping si è ormai assestato in quell’angolo poco appariscente ma indispensabile dello stack dei dati.

Che tu sia un analista di business, un marketer o semplicemente un principiante curioso, saper estrarre dati da un sito web sta diventando rapidamente una competenza indispensabile. E se sei come me, probabilmente vuoi saltare la solita routine infinita del copia-incolla e arrivare subito alla parte interessante: insight utili, fogli di calcolo ordinati e magari anche un po’ di magia dell’automazione.

Ed è qui che entra in gioco Python. È il coltellino svizzero del mondo dei dati: abbastanza semplice per chi è alle prime armi, ma abbastanza potente da gestire tutto, dall’estrazione di una singola pagina al crawling di migliaia di pagine. In questo tutorial pratico ti guiderò attraverso le basi del web scraping con Python, ti mostrerò come affrontare i siti dinamici e ti presenterò anche , il nostro estrattore web con AI e senza codice che rende l’estrazione dei dati facile come ordinare cibo da asporto. Che tu sia qui per imparare a programmare o solo per trovare una scorciatoia, sei nel posto giusto.

Che cos’è il Web Scraping e perché usare Python per estrarre dati da un sito web?

Il web scraping è il processo automatizzato di estrazione di informazioni dai siti web e della loro conversione in un formato strutturato — pensa a fogli di calcolo, CSV o database — per l’analisi o per l’uso aziendale (). Invece di copiare e incollare i dati a mano, un estrattore imita ciò che farebbe una persona, ma a una velocità e su una scala enormemente superiori.

Perché è così prezioso? Perché nel business di oggi, il processo decisionale guidato dai dati è tutto. Più cresci, più decisioni vuoi basare su numeri reali invece che su sensazioni — e molti di quei numeri nascono proprio da una pagina web di qualcun altro.

Immagina di poter monitorare ogni giorno i prezzi dei concorrenti, aggregare annunci immobiliari o creare una lista personalizzata di lead, tutto senza sforzo.

Allora, perché Python? Ecco perché è il linguaggio di riferimento per il web scraping:

why-python-benefits.png

  • Leggibilità e semplicità: la sintassi di Python è pulita e adatta ai principianti, quindi è facile scrivere e capire gli script di scraping ().
  • Ecosistema ricco: librerie come requests, BeautifulSoup, Scrapy e Selenium rendono semplici lo scraping, il parsing e l’automazione delle azioni nel browser.
  • Supporto della community: dato che Python è costantemente tra , non mancano tutorial, forum ed esempi di codice per aiutarti.
  • Scalabilità: Python può gestire tutto, da semplici script usa e getta a crawler su larga scala.

In breve: Python è il tuo biglietto d’ingresso nel mondo dei dati web, che tu sia un principiante assoluto o un analista esperto.

Da dove iniziare: basi del tutorial di Web Scraping con Python

Prima di tuffarci nel codice, vediamo il flusso di lavoro di base per estrarre dati da un sito web con Python:

web-scraping-workflow-steps.png

  1. Configura l’ambiente: installa Python e le librerie necessarie (requests, BeautifulSoup, ecc.).
  2. Invia una richiesta: usa Python per recuperare il contenuto HTML della pagina web di destinazione.
  3. Analizza l’HTML: usa un parser per navigare nella struttura della pagina.
  4. Estrai i dati: individua e recupera le informazioni che ti servono.
  5. Salva i risultati: memorizza i dati in un CSV, in un file Excel o in un database per l’analisi.

Non serve essere un mago del coding per iniziare. Se sai installare Python ed eseguire uno script, sei già a metà strada. Per chi è alle prime armi, consiglio di usare un o un notebook Jupyter, ma va bene anche un semplice editor di testo.

Librerie essenziali:

  • requests — per recuperare le pagine web
  • BeautifulSoup — per analizzare l’HTML
  • pandas — per salvare e pulire i dati (opzionale, ma fortemente consigliato)

Scegliere la libreria giusta per il Web Scraping con Python: BeautifulSoup, Scrapy o Selenium?

Non tutti gli strumenti di scraping Python sono uguali. Ecco una rapida panoramica delle tre opzioni più popolari:

StrumentoIdeale perPunti di forzaLimiti
BeautifulSoupPagine semplici e statiche; principiantiFacile da usare, configurazione minima, documentazione eccellenteNon ideale per crawl di grandi dimensioni o contenuti dinamici
ScrapyCrawling su larga scala, su più pagineVeloce, asincrono, pipeline integrate, gestisce crawling e archiviazione datiCurva di apprendimento più ripida, eccessivo per lavori piccoli, non esegue JavaScript
SeleniumSiti dinamici o ricchi di JavaScript, automazionePuò renderizzare il JS, simulare azioni dell’utente, supporta login e clicPiù lento, richiede più risorse, configurazione più complessa

BeautifulSoup: la scelta ideale per il parsing HTML semplice

BeautifulSoup è perfetto per principianti e piccoli progetti. Ti permette di analizzare l’HTML ed estrarre elementi con poche righe di codice. Se il sito di destinazione è per lo più statico (senza sofisticati caricamenti JavaScript), BeautifulSoup + requests è tutto ciò che ti serve.

Esempio:

1import requests
2from bs4 import BeautifulSoup
3url = "https://example.com"
4response = requests.get(url)
5soup = BeautifulSoup(response.text, 'html.parser')
6titles = [h2.text for h2 in soup.find_all('h2', class_='product-title')]
7print(titles)

Quando usarlo: estrazioni una tantum, blog semplici, pagine prodotto o directory.

Scrapy: per crawling strutturato o su larga scala

Scrapy è un framework completo per eseguire il crawling di interi siti o gestire migliaia di pagine. È asincrono (cioè veloce), supporta pipeline per pulire/salvare i dati e può seguire i link automaticamente.

Esempio:

1import scrapy
2class ProductSpider(scrapy.Spider):
3    name = "products"
4    start_urls = ["https://example.com/products"]
5    def parse(self, response):
6        for item in response.css('div.product'):
7            yield {
8                'name': item.css('h2::text').get(),
9                'price': item.css('span.price::text').get()
10            }

Quando usarlo: progetti grandi, crawl pianificati o quando ti servono velocità e struttura.

Selenium: gestire siti dinamici e ricchi di JavaScript

Selenium controlla un browser reale (come Chrome o Firefox), quindi può gestire siti che caricano dati con JavaScript, richiedono il login o necessitano di clic sui pulsanti.

Esempio:

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3driver = webdriver.Chrome()
4driver.get("https://example.com/login")
5driver.find_element(By.NAME, "username").send_keys("myuser")
6driver.find_element(By.NAME, "password").send_keys("mypassword")
7driver.find_element(By.XPATH, "//button[@type='submit']").click()
8dashboard = driver.find_element(By.ID, "dashboard").text
9print(dashboard)
10driver.quit()

Quando usarlo: social media, siti finanziari, infinite scroll o qualsiasi pagina che sembri vuota quando fai “Visualizza sorgente”.

Passo dopo passo: come estrarre dati da un sito web usando Python (tutorial per principianti)

Vediamo un esempio reale usando requests e BeautifulSoup. Estrarremo da un semplice sito di libri titoli, autori e prezzi.

Passo 1: configurare l’ambiente Python

Per prima cosa, installa le librerie di cui hai bisogno:

1pip install requests beautifulsoup4 pandas

Poi importale nel tuo script:

1import requests
2from bs4 import BeautifulSoup
3import pandas as pd

Passo 2: inviare una richiesta al sito web

Recupera il contenuto HTML:

1url = "http://books.toscrape.com/catalogue/page-1.html"
2response = requests.get(url)
3if response.status_code == 200:
4    html = response.text
5else:
6    print(f"Impossibile recuperare la pagina: \{response.status_code\}")

Passo 3: analizzare il contenuto HTML

Crea un oggetto BeautifulSoup:

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

Trova tutti i contenitori dei libri:

1books = soup.find_all('article', class_='product_pod')
2print(f"Trovati {len(books)} libri in questa pagina.")

Passo 4: estrarre i dati necessari

Scorri ogni libro e recupera i dettagli:

1data = []
2for book in books:
3    title = book.h3.a['title']
4    price = book.find('p', class_='price_color').text
5    data.append({"Titolo": title, "Prezzo": price})

Passo 5: salvare i dati per l’analisi

Converti in un DataFrame e salva:

1df = pd.DataFrame(data)
2df.to_csv('books.csv', index=False)

Ora hai un file CSV pulito, pronto per l’analisi!

Consigli per la risoluzione dei problemi:

  • Se ottieni risultati vuoti, controlla se i dati vengono caricati da JavaScript (vedi la sezione successiva).
  • Ispeziona sempre la struttura HTML con gli strumenti di sviluppo del browser.
  • Gestisci i dati mancanti con get_text(strip=True) e controlli condizionali.

Superare i contenuti dinamici: estrarre dati da siti renderizzati in JavaScript

I siti moderni amano JavaScript. A volte i dati che cerchi non sono nell’HTML iniziale, ma vengono caricati dopo la comparsa della pagina. Se il tuo estrattore restituisce risultati vuoti, potresti avere a che fare con contenuti dinamici.

Come gestirli:

  • Selenium: simula un browser reale, attende il caricamento dei contenuti e può cliccare pulsanti o scorrere la pagina.
  • Playwright/Puppeteer: più avanzati, ma con un’idea simile (browser headless).

Mini guida a Selenium:

  1. Installa Selenium e un driver del browser (ad esempio ChromeDriver).
  2. Usa attese esplicite per dare il tempo ai contenuti di caricarsi.
  3. Estrai l’HTML renderizzato e, se necessario, analizzalo con BeautifulSoup.

Esempio:

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3from selenium.webdriver.support.ui import WebDriverWait
4from selenium.webdriver.support import expected_conditions as EC
5driver = webdriver.Chrome()
6driver.get("https://example.com/dynamic")
7WebDriverWait(driver, 10).until(
8    EC.presence_of_element_located((By.CLASS_NAME, "dynamic-content"))
9)
10html = driver.page_source
11soup = BeautifulSoup(html, 'html.parser')
12# Estrai i dati come prima
13driver.quit()

Quando serve Selenium?

  • Se requests.get() restituisce HTML senza dati, ma nel browser li vedi.
  • Se il sito usa infinite scroll, popup o richiede il login.

Semplificare il Web Scraping con l’AI: usare Thunderbit per estrarre dati da un sito web

Diciamolo chiaramente: a volte vuoi solo i dati, non il codice. Ed è qui che entra in gioco . Thunderbit è un’estensione Chrome con AI che ti permette di estrarre dati da qualsiasi sito web in pochi clic, senza bisogno di Python.

Come funziona Thunderbit:

  1. Installa l’.
  2. Apri il sito web di destinazione.
  3. Fai clic sull’icona di Thunderbit e premi “AI Suggerisci Campi”. L’AI di Thunderbit analizza la pagina e ti suggerisce quali dati estrarre (per esempio nomi dei prodotti, prezzi, email).
  4. Modifica i campi se necessario, poi fai clic su “Estrai”.
  5. Esporta i dati direttamente in Excel, Google Sheets, Notion o Airtable.

Perché Thunderbit è fantastico:

  • Non serve programmare. Anche mia madre potrebbe usarlo (e ancora oggi mi chiama per i problemi del Wi‑Fi).
  • Gestisce sottopagine e paginazione. Devi estrarre dettagli di prodotti da più pagine? Thunderbit può navigare tra le pagine e unire i dati per te.
  • Istruzioni in linguaggio naturale. Basta dirgli cosa vuoi (“estrai tutti i titoli e i prezzi dei prodotti”) e lasciare che l’AI ci pensi.
  • Template istantanei per i siti più popolari. Amazon, Zillow, LinkedIn e altri ancora: un clic e hai finito.
  • Esportazione gratuita dei dati. Scarica in CSV, Excel oppure invia tutto direttamente ai tuoi strumenti preferiti.

Thunderbit è usato da oltre . Esiste un piano gratuito che puoi provare senza pagare nulla — consulta la per vedere l’allocazione attuale, perché i limiti sono cambiati un paio di volte. Per chi lavora in azienda è un grande risparmio di tempo; per chi usa Python, è un modo utile per valutare un progetto prima di decidere se vale la pena scrivere un estrattore personalizzato.


Dopo l’estrazione: pulire e analizzare i dati con Pandas e NumPy

Estrarre i dati è solo il primo passo. I dati web grezzi sono spesso disordinati: duplicati, valori mancanti, formati strani. È qui che brillano le librerie pandas e NumPy di Python.

Attività comuni di pulizia:

  • Rimuovere i duplicati: df.drop_duplicates(inplace=True)
  • Gestire i valori mancanti: df.fillna('Sconosciuto') oppure df.dropna()
  • Convertire i tipi di dato: df['Price'] = df['Price'].str.replace('$','').astype(float)
  • Analizzare le date: df['Date'] = pd.to_datetime(df['Date'])
  • Filtrare gli outlier: df = df[df['Price'] > 0]

Analisi di base:

  • Statistiche riassuntive: df.describe()
  • Raggruppare per categoria: df.groupby('Category')['Price'].mean()
  • Grafici rapidi: df['Price'].hist() oppure df.groupby('Category')['Price'].mean().plot(kind='bar')

Per matematica più avanzata o operazioni rapide su array, NumPy è il tuo alleato. Ma per la maggior parte degli utenti business, pandas copre il 95% di ciò che serve.

Risorse: se sei nuovo a pandas, dai un’occhiata alla guida .

Best practice e consigli per un Web Scraping con Python di successo

Il web scraping è potente, ma comporta anche responsabilità. Ecco la mia checklist per fare scraping da professionisti (e non farsi bloccare o denunciare):

  • Rispetta robots.txt e i Termini di servizio. Controlla sempre se il sito consente lo scraping ().
  • Non sovraccaricare i server. Inserisci pause tra le richieste (time.sleep(2)) ed esegui lo scraping a una velocità simile a quella umana.
  • Usa header realistici. Imposta una stringa User-Agent per imitare un browser.
  • Gestisci gli errori con eleganza. Usa blocchi try/except e ritenta le richieste fallite.
  • Ruota i proxy se necessario. Per lo scraping su larga scala, valuta pool di proxy per evitare il blocco degli IP.
  • Sii etico e legale. Non estrarre dati personali o contenuti protetti da login senza autorizzazione.
  • Documenta il processo. Tieni traccia di cosa hai estratto, da dove e quando.
  • Usa le API ufficiali quando disponibili. A volte c’è un modo migliore dell’estrazione dell’HTML.

Per altri consigli, consulta la .

Conclusione e punti chiave

Il web scraping con Python è un superpotere per chiunque voglia trasformare il caos del web in dati strutturati e utili all’azione. Che tu stia usando codice (con requests, BeautifulSoup, Scrapy o Selenium) oppure uno strumento no-code come , hai gli strumenti per estrarre dati da un sito web e ricavarne nuove informazioni.

Ricorda:

  • Inizia in piccolo: estrai una sola pagina prima di affrontare progetti grandi.
  • Scegli lo strumento giusto per le tue esigenze (BeautifulSoup per le basi, Scrapy per la scala, Selenium per i siti dinamici, Thunderbit per il no-code).
  • Pulisci e analizza i dati con pandas e NumPy.
  • Esegui sempre lo scraping in modo responsabile ed etico.

Pronto a provarci? Parti con un piccolo progetto — magari estrai i titoli di oggi o un elenco di prodotti — e vedi quanto velocemente riesci a passare da una pagina web grezza a un foglio di calcolo pulito. E se vuoi saltare il codice, e lascia che sia l’AI a fare il lavoro pesante.

Per altri tutorial, consigli e approfondimenti sul web scraping, visita il .

FAQ

1. Che cos’è il web scraping e perché Python è così popolare per farlo?
Il web scraping è l’estrazione automatizzata di dati dai siti web. Python è popolare per il web scraping grazie alla sua sintassi leggibile, alle librerie potenti (come BeautifulSoup, Scrapy e Selenium) e al forte supporto della community ().

2. Quale libreria Python dovrei usare per il web scraping?
Usa BeautifulSoup per pagine semplici e statiche; Scrapy per crawling su larga scala o su più pagine; Selenium per siti dinamici o ricchi di JavaScript. Ognuna ha i suoi punti di forza, a seconda delle tue esigenze ().

3. Come gestisco i siti che caricano dati con JavaScript?
Per contenuti renderizzati in JavaScript, usa Selenium (o Playwright) per simulare un browser e attendere il caricamento dei contenuti prima di estrarre i dati. A volte puoi trovare un endpoint API sottostante ispezionando il traffico di rete.

4. Che cos’è Thunderbit e come semplifica il web scraping?
è un’estensione Chrome con AI che ti permette di estrarre dati da qualsiasi sito web senza programmare. Usa l’AI per suggerire i campi, gestire sottopagine e paginazione, ed esporta i dati direttamente in Excel, Google Sheets, Notion o Airtable.

5. Come posso pulire e analizzare i dati estratti in Python?
Usa pandas per rimuovere duplicati, gestire valori mancanti, convertire i tipi di dato ed eseguire analisi. NumPy è ottimo per le operazioni numeriche. Per la visualizzazione, pandas si integra con Matplotlib per grafici rapidi ().

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

Prova AI Web Scraper

Scopri di più

Shuai Guan
Shuai Guan
CEO di Thunderbit | Esperto di automazione dei dati con IA Shuai Guan è CEO di Thunderbit e laureato in Ingegneria presso l’Università del Michigan. Forte di quasi un decennio di esperienza nel settore tech e nell’architettura SaaS, è specializzato nel trasformare modelli di IA complessi in strumenti pratici, no-code, per l’estrazione dei dati. In questo blog condivide insight diretti, provati sul campo, su web scraping e strategie di automazione, per aiutarti a creare workflow più intelligenti e basati sui dati. Quando non ottimizza i flussi di lavoro dei dati, applica la stessa attenzione ai dettagli alla sua passione per la fotografia.
Topics
Estrarre dati da un sito webPythonTutorial di web scraping

Prova Thunderbit

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

Ottieni Thunderbit È gratis
Estrai dati con l'AI
Trasferisci facilmente i dati su Google Sheets, Airtable o Notion
PRODUCT HUNT#1 Product of the Week