Guida Pratica: Tutorial di Web Scraping con Python e Selenium Passo dopo Passo

Ultimo aggiornamento il January 23, 2026

Il web di oggi non ha più nulla a che vedere con quello di qualche anno fa. Ormai quasi ogni sito che visiti è pieno zeppo di JavaScript, con contenuti che si aggiornano al volo: pensa agli scroll infiniti, ai pop-up che spuntano all’improvviso o alle dashboard che mostrano i dati solo dopo qualche clic. Tanto per darti un’idea, , il che significa che i vecchi strumenti di scraping che leggono solo l’HTML statico si perdono una marea di informazioni utili. Se hai mai provato a estrarre prezzi da un e-commerce moderno o a raccogliere annunci immobiliari da una mappa interattiva, sai bene quanto può essere snervante: spesso i dati che ti servono non si vedono nemmeno nel codice sorgente.

Ed è qui che lo scraping con Selenium fa davvero la differenza. Dopo anni passati a sviluppare strumenti di automazione (e sì, a fare scraping su una valanga di siti), posso dirti che imparare a usare Selenium è una vera marcia in più per chiunque abbia bisogno di dati freschi e dinamici. In questo tutorial pratico ti porto passo passo: dall’installazione all’automazione, fino a mostrarti come collegare Selenium con per ottenere dati già belli ordinati e pronti da usare. Che tu sia un analista, un commerciale o semplicemente un fan di Python, qui trovi tecniche concrete e – perché no – anche qualche risata (chi ha mai debuggato un selettore XPath sa che serve una pazienza zen!).

Cos’è Selenium e Perché Usarlo per il Web Scraping?

selenium-dynamic-vs-static-web-scraping.png Partiamo dalle basi. è un framework open-source che ti permette di comandare un vero browser (tipo Chrome o Firefox) direttamente dal tuo codice. Immaginalo come un robottino che può aprire pagine, cliccare pulsanti, compilare form, scorrere e persino eseguire JavaScript, proprio come faresti tu davanti allo schermo. Questo è fondamentale perché la maggior parte dei siti moderni non mostra subito tutti i dati: spesso i contenuti arrivano solo dopo un’interazione.

Perché è fondamentale per lo scraping? Strumenti classici come BeautifulSoup o Scrapy sono perfetti per l’HTML statico, ma non riescono a “vedere” quello che viene caricato da JavaScript dopo l’apertura della pagina. Selenium invece può interagire in tempo reale, rendendolo perfetto per:

  • Estrarre liste di prodotti che compaiono solo dopo aver cliccato “Carica altri”
  • Raccogliere prezzi o recensioni che si aggiornano al volo
  • Navigare tra login, pop-up o scroll infiniti
  • Prelevare dati da dashboard, mappe o altri elementi interattivi

In poche parole, Selenium è la soluzione ideale quando i dati compaiono solo dopo che la pagina è stata caricata completamente o dopo un’azione dell’utente.

I Passaggi Fondamentali per il Web Scraping con Python e Selenium

Fare scraping con Selenium si riduce a tre step fondamentali:

FaseCosa FaiPerché è Importante
1. Configurazione AmbienteInstalla Selenium, WebDriver e librerie PythonPrepara gli strumenti ed evita problemi di setup
2. Individuazione ElementiTrova i dati usando ID, classi, XPath, ecc.Punta alle info giuste, anche se nascoste dal JavaScript
3. Estrazione e Salvataggio DatiPreleva testo, link o tabelle e salva in CSV/ExcelTrasforma i dati grezzi in qualcosa di utilizzabile

Vediamo ogni passaggio con esempi pratici e codice pronto da copiare, modificare e mostrare agli amici.

Passo 1: Configurare l’Ambiente Python e Selenium

Prima cosa: installa Selenium e il driver del browser (ad esempio ChromeDriver per Chrome). La buona notizia? È più facile che mai.

Installa Selenium

Apri il terminale ed esegui:

1pip install selenium

Scarica un WebDriver

  • Chrome: Scarica (assicurati che la versione sia quella giusta per il tuo Chrome).
  • Firefox: Scarica .

Dritta: Con Selenium 4.6+ puoi usare Selenium Manager per scaricare i driver in automatico, senza più impazzire con le variabili PATH ().

Il tuo primo script Selenium

Ecco un semplice “hello world” con Selenium:

1from selenium import webdriver
2driver = webdriver.Chrome()  # O webdriver.Firefox()
3driver.get("https://example.com")
4print(driver.title)
5driver.quit()

Tips per risolvere i problemi:

  • Se ti esce un errore “driver not found”, controlla il PATH o usa Selenium Manager.
  • Assicurati che le versioni di browser e driver siano compatibili.
  • Se lavori su un server senza interfaccia grafica, guarda i consigli sulla modalità headless qui sotto.

Passo 2: Individuare gli Elementi Web da Estrarre

Qui viene il bello: dire a Selenium quali dati vuoi raccogliere. I siti sono fatti di elementi (div, span, tabelle, ecc.) e Selenium ti offre vari modi per trovarli.

Strategie Comuni per Individuare Elementi

  • By.ID: Trova un elemento tramite ID univoco
  • By.CLASS_NAME: Trova elementi tramite classe CSS
  • By.XPATH: Usa espressioni XPath (super flessibili, ma a volte fragili)
  • By.CSS_SELECTOR: Usa selettori CSS (ottimi per query complesse)

Ecco qualche esempio:

1from selenium.webdriver.common.by import By
2# Trova tramite ID
3price = driver.find_element(By.ID, "price").text
4# Trova tramite XPath
5title = driver.find_element(By.XPATH, "//h1").text
6# Trova tutte le immagini prodotto tramite selettore CSS
7images = driver.find_elements(By.CSS_SELECTOR, ".product img")
8for img in images:
9    print(img.get_attribute("src"))

Consiglio: Usa sempre il selettore più semplice e stabile (ID > classe > CSS > XPath). Se la pagina carica i dati con un po’ di ritardo, usa le attese esplicite:

1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3wait = WebDriverWait(driver, 10)
4price_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))

Così eviti che lo script vada in errore se i dati ci mettono qualche secondo a comparire.

Passo 3: Estrazione e Salvataggio dei Dati

Una volta trovati gli elementi, è il momento di estrarre i dati e salvarli dove ti serve.

Supponiamo di voler estrarre una tabella di prodotti:

1data = []
2rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
3for row in rows:
4    cells = row.find_elements(By.TAG_NAME, "td")
5    data.append([cell.text for cell in cells])

Salvataggio in CSV con Pandas

1import pandas as pd
2df = pd.DataFrame(data, columns=["Nome", "Prezzo", "Disponibilità"])
3df.to_csv("prodotti.csv", index=False)

Puoi anche salvare in Excel (df.to_excel("prodotti.xlsx")) o inviare i dati su Google Sheets tramite API.

Esempio Completo: Estrazione di Titoli e Prezzi dei Prodotti

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3import pandas as pd
4driver = webdriver.Chrome()
5driver.get("https://example.com/products")
6data = []
7products = driver.find_elements(By.CLASS_NAME, "product-card")
8for p in products:
9    title = p.find_element(By.CLASS_NAME, "title").text
10    price = p.find_element(By.CLASS_NAME, "price").text
11    data.append([title, price])
12driver.quit()
13df = pd.DataFrame(data, columns=["Titolo", "Prezzo"])
14df.to_csv("prodotti.csv", index=False)

Selenium vs. BeautifulSoup e Scrapy: Cosa Rende Unico Selenium?

selenium-vs-traditional-scrapers-comparison.png Facciamo chiarezza: quando conviene usare Selenium e quando invece BeautifulSoup o Scrapy sono più adatti? Ecco una tabella di confronto:

StrumentoIdeale perGestisce JavaScript?Velocità e Risorse
SeleniumSiti dinamici/interattiviPiù lento, usa più memoria
BeautifulSoupScraping HTML statico sempliceNoMolto veloce, leggero
ScrapyCrawling di molti siti staticiLimitato*Super veloce, asincrono
ThunderbitScraping no-code per businessSì (AI)Veloce per lavori piccoli/medi

*Scrapy può gestire alcuni contenuti dinamici con plugin, ma non è il suo forte ().

Quando scegliere Selenium:

  • I dati compaiono solo dopo clic, scroll o login
  • Devi gestire pop-up, scroll infiniti o dashboard dinamiche
  • Gli estrattori statici non bastano

Quando scegliere BeautifulSoup/Scrapy:

  • I dati sono già nell’HTML iniziale
  • Devi estrarre migliaia di pagine in fretta
  • Vuoi consumare poche risorse

E se vuoi evitare il codice, ti permette di estrarre dati dinamici con l’AI: basta cliccare su “AI Suggerisci Campi” ed esportare su Sheets, Notion o Airtable. (Ne parliamo tra poco.)

Automatizzare le Attività di Web Scraping con Selenium e Python

Diciamolo: nessuno vuole svegliarsi alle 2 di notte per lanciare uno script di scraping. La buona notizia è che puoi programmare i tuoi job Selenium usando strumenti di scheduling Python o il task scheduler del tuo sistema operativo (cron su Linux/Mac o Utilità di Pianificazione su Windows).

Usare la Libreria schedule

1import schedule
2import time
3def job():
4    # Qui il tuo codice di scraping
5    print("Scraping...")
6schedule.every().day.at("09:00").do(job)
7while True:
8    schedule.run_pending()
9    time.sleep(1)

Oppure con Cron (Linux/Mac)

Aggiungi questa riga al tuo crontab per eseguire ogni ora:

10 * * * * python /percorso/tuo_script.py

Consigli per l’automazione:

  • Esegui Selenium in modalità headless (vedi sotto) per evitare finestre del browser.
  • Registra gli errori e imposta notifiche in caso di problemi.
  • Ricordati sempre di chiudere il browser con driver.quit() per liberare risorse.

Come Rendere lo Scraping con Selenium Più Veloce ed Efficiente

Selenium è una bomba, ma può diventare lento e pesante se non lo ottimizzi. Ecco come rendere i tuoi script più veloci e affidabili:

1. Usa la Modalità Headless

Non serve vedere Chrome che si apre e si chiude cento volte. La modalità headless fa girare il browser in background:

1from selenium.webdriver.chrome.options import Options
2opts = Options()
3opts.headless = True
4driver = webdriver.Chrome(options=opts)

2. Blocca Immagini e Contenuti Inutili

Se ti servono solo i testi, blocca le immagini per velocizzare il caricamento:

1prefs = {"profile.managed_default_content_settings.images": 2}
2opts.add_experimental_option("prefs", prefs)

3. Usa Selettori Efficienti

  • Preferisci ID o selettori CSS semplici agli XPath complicati.
  • Evita time.sleep(): usa le attese esplicite (WebDriverWait).

4. Randomizza le Attese

Aggiungi pause casuali per simulare la navigazione umana ed evitare blocchi:

1import random, time
2time.sleep(random.uniform(1, 3))

5. Cambia User Agent e IP (se serve)

Se fai scraping intensivo, alterna lo user agent e valuta l’uso di proxy per aggirare i blocchi più semplici.

6. Gestisci Sessioni ed Errori

  • Usa try/except per gestire elementi mancanti senza far saltare tutto.
  • Registra gli errori e salva screenshot per il debug.

Per altri consigli di ottimizzazione, dai un’occhiata alla .

Avanzato: Unire Selenium e Thunderbit per Esportare Dati Strutturati

Qui si fa davvero interessante—soprattutto se vuoi risparmiare tempo nella pulizia ed esportazione dei dati.

Dopo aver raccolto i dati grezzi con Selenium, puoi usare per:

  • Rilevare automaticamente i campi: L’AI di Thunderbit legge le tue pagine o i CSV e suggerisce i nomi delle colonne (“AI Suggerisci Campi”).
  • Scraping di sottopagine: Se hai una lista di URL (ad esempio pagine prodotto), Thunderbit può visitarli e arricchire la tabella con dettagli aggiuntivi—senza scrivere altro codice.
  • Arricchimento dati: Traduci, categorizza o analizza i dati in tempo reale.
  • Esporta ovunque: Un clic per esportare su Google Sheets, Airtable, Notion, CSV o Excel.

Esempio di workflow:

  1. Usa Selenium per estrarre una lista di URL e titoli dei prodotti.
  2. Esporta i dati in CSV.
  3. Apri Thunderbit, importa il CSV e lascia che l’AI suggerisca i campi.
  4. Usa lo scraping di sottopagine di Thunderbit per aggiungere dettagli (come immagini o specifiche) da ogni URL prodotto.
  5. Esporta il dataset finale e strutturato su Sheets o Notion.

Questa combinazione ti fa risparmiare ore di lavoro manuale e ti permette di concentrarti sull’analisi, non sulla pulizia dei dati. Per approfondire questo flusso, consulta la .

Best Practice e Risoluzione Problemi nello Scraping con Selenium

Fare scraping è un po’ come andare a pesca: a volte tiri su il pesce grosso, a volte resti impigliato nelle alghe. Ecco come tenere i tuoi script affidabili—e rispettosi delle regole:

Best Practice

  • Rispetta robots.txt e i termini del sito: Controlla sempre se lo scraping è permesso.
  • Modera le richieste: Non stressare i server—aggiungi attese e monitora eventuali errori 429.
  • Usa le API se disponibili: Se i dati sono pubblici tramite API, meglio così: sono più sicure e stabili.
  • Estrai solo dati pubblici: Evita info personali o sensibili e rispetta le normative sulla privacy.
  • Gestisci pop-up e CAPTCHA: Usa Selenium per chiudere i pop-up, ma occhio ai CAPTCHA—automatizzarli è un altro sport.
  • Randomizza user agent e attese: Aiuta a evitare blocchi e rilevamenti.

Errori Comuni e Soluzioni

ErroreCosa SignificaCome Risolvere
NoSuchElementExceptionElemento non trovatoControlla il selettore; usa le attese
Timeout errorsPagina o elemento troppo lentoAumenta il tempo di attesa; verifica la connessione
Driver/browser mismatchSelenium non avvia il browserAggiorna driver e browser
Session crashesBrowser chiuso inaspettatamenteUsa modalità headless; gestisci le risorse

Per altri suggerimenti, consulta il .

Conclusioni e Punti Chiave

Lo scraping dinamico non è più roba da smanettoni. Con Python e Selenium puoi automatizzare qualsiasi browser, interagire con i siti più tosti e ottenere i dati che servono al tuo business—che sia per vendite, ricerca o semplice curiosità. Ricorda:

  • Selenium è la scelta giusta per siti dinamici e interattivi.
  • Tre passaggi fondamentali: setup, individuazione, estrazione e salvataggio.
  • Automatizza i tuoi script per aggiornare i dati regolarmente.
  • Ottimizza velocità e affidabilità con modalità headless, attese intelligenti e selettori efficienti.
  • Unisci Selenium e Thunderbit per strutturare ed esportare i dati facilmente—soprattutto se vuoi evitare la fatica dei fogli di calcolo.

Vuoi provarci? Parti dagli esempi di codice qui sopra e, quando vuoi portare il tuo scraping al livello successivo, dai un’occhiata a per una pulizia ed esportazione dati istantanea grazie all’AI. Se vuoi approfondire, visita il per guide, tutorial e novità sull’automazione web.

Buon scraping—e che i tuoi selettori trovino sempre ciò che cerchi.

Prova gratis l’Estrattore Web AI di Thunderbit

Domande Frequenti

1. Perché dovrei usare Selenium per lo scraping invece di BeautifulSoup o Scrapy?
Selenium è perfetto per siti dinamici dove i contenuti si caricano dopo azioni dell’utente o tramite JavaScript. BeautifulSoup e Scrapy sono più veloci per HTML statico, ma non possono interagire con elementi dinamici o simulare clic e scroll.

2. Come posso rendere più veloce il mio estrattore Selenium?
Usa la modalità headless, blocca immagini e risorse inutili, scegli selettori efficienti e aggiungi attese casuali per simulare la navigazione umana. Trovi altri consigli nella .

3. Posso programmare l’esecuzione automatica degli script Selenium?
Certo! Usa la libreria Python schedule o il task scheduler del sistema operativo (cron o Utilità di Pianificazione) per eseguire gli script a intervalli regolari. Automatizzare lo scraping ti aiuta a mantenere i dati sempre aggiornati.

4. Qual è il modo migliore per esportare i dati estratti con Selenium?
Usa Pandas per salvare i dati in CSV o Excel. Per esportazioni avanzate (Google Sheets, Notion, Airtable), importa i dati su e sfrutta le sue funzioni di esportazione con un clic.

5. Come gestisco pop-up e CAPTCHA in Selenium?
Puoi chiudere i pop-up individuando e cliccando il pulsante di chiusura. I CAPTCHA sono molto più complessi: se li incontri, valuta soluzioni manuali o servizi dedicati, e rispetta sempre i termini d’uso del sito.

Vuoi altri tutorial di scraping, consigli su automazione AI o novità sugli strumenti per i dati aziendali? Iscriviti al o visita il nostro per demo pratiche.

Scopri di più

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
Scraping con seleniumTutorial Selenium web scrapingPython selenium estrazione dati da siti web
Indice dei contenuti

Prova Thunderbit

Estrai lead e altri dati in 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