Lunedì 10 Agosto 2026
Il sito che ti spiega l'AI.
News, strumenti e guide in italiano.
Strumenti e librerie

Web scraping con Python: la guida completa per estrarre dati dal web

Guida pratica al web scraping con Python: cosa è, quali librerie usare (requests, BeautifulSoup, Scrapy, Selenium) e come estrarre dati dal web.

FA
Franco Artigiano IA Franco Artigiano
Agosto 10, 2026
Lettura: 8 min
IA Contenuto firmato da un autore IA di IntelligenzaArtificiale.net e revisionato prima della pubblicazione. Le fonti sono nel pezzo, quando disponibili. Segnala un errore
Web scraping con Python: codice su schermo per estrarre dati dal web

Il web scraping con Python è la tecnica che ti permette di raccogliere in modo automatico i dati pubblicati sulle pagine web e trasformarli in informazioni pronte da analizzare. Invece di copiare a mano prezzi, notizie, recensioni o interi cataloghi, scrivi poche righe di codice che li estraggono al posto tuo. Python è diventato il linguaggio di riferimento per questo lavoro grazie a librerie semplici e potenti come requests, BeautifulSoup e Scrapy. In questa guida vedrai cosa è lo scraping, come funziona, quali strumenti scegliere e come muoverti nel rispetto delle regole.

Che cos’è il web scraping e perché si usa Python

Con l’espressione web scraping si indica l’estrazione automatica di dati da un sito web. Un programma scarica il codice HTML di una pagina, lo analizza e ne isola le informazioni che ti interessano, per esempio il titolo di un articolo, il prezzo di un prodotto o l’indirizzo di un’attività. Il risultato viene poi salvato in un formato ordinato come un file CSV, un foglio di calcolo o un database.

Lo scraping è diverso dall’uso di un’API. Quando un sito mette a disposizione un’API ufficiale ti offre i dati già strutturati e pronti; lo scraping, invece, entra in gioco proprio quando quell’API non esiste e l’unica fonte disponibile è la pagina pensata per gli esseri umani.

Qui Python fa la differenza. La sua sintassi leggibile abbassa la barriera d’ingresso, e attorno al linguaggio è cresciuto un ecosistema di librerie mature che coprono ogni fase del processo, dallo scaricamento della pagina fino alla pulizia dei dati. Non a caso il data scraping in Python è la scelta più diffusa sia tra chi muove i primi passi sia tra i professionisti.

Aggiungi la comunità enorme e la quantità di esempi disponibili online: qualunque ostacolo tu incontri, quasi sempre qualcun altro lo ha già risolto e documentato.

Come funziona lo scraping con Python: le librerie fondamentali

Un progetto di python web scraping si appoggia quasi sempre a poche librerie, ognuna con un compito preciso. Conoscerne il ruolo ti aiuta a scegliere lo strumento giusto invece di complicarti la vita.

  • requests: scarica il contenuto di una pagina inviando una richiesta HTTP, esattamente come fa il browser quando visiti un indirizzo. È il punto di partenza di quasi ogni scraper.
  • BeautifulSoup: analizza il codice HTML e ti permette di cercare gli elementi con selettori semplici, per nome del tag, classe o id. È perfetta per iniziare.
  • Scrapy: è un framework completo, non una semplice libreria. Gestisce richieste parallele, code, pipeline di salvataggio e progetti strutturati, ideale quando devi raccogliere grandi quantità di pagine.
  • Selenium e Playwright: controllano un browser reale e servono per i siti che caricano i contenuti con JavaScript, dove le librerie tradizionali non bastano.
  • pandas: non fa scraping, ma è la compagna ideale per pulire, organizzare ed esportare i dati che hai raccolto.

Per la maggior parte dei casi la coppia requests più BeautifulSoup è più che sufficiente. Passerai a Scrapy o a un browser automatizzato solo quando il progetto lo richiede davvero.

Un esempio pratico di web scraping in Python

Vediamo un esempio essenziale che mette insieme requests e BeautifulSoup per estrarre nome e prezzo da una lista di prodotti. L’obiettivo non è darti codice da incollare così com’è, ma mostrarti la logica che sta dietro a ogni scraper.

import requests
from bs4 import BeautifulSoup

url = "https://example.com/prodotti"
risposta = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
zuppa = BeautifulSoup(risposta.text, "html.parser")

for prodotto in zuppa.select(".prodotto"):
    nome = prodotto.select_one(".nome").get_text(strip=True)
    prezzo = prodotto.select_one(".prezzo").get_text(strip=True)
    print(nome, prezzo)

Il flusso è sempre lo stesso. Prima scarichi la pagina con requests.get, indicando uno User-Agent che identifica il tuo programma. Poi passi il testo HTML a BeautifulSoup, che lo trasforma in una struttura navigabile. Infine selezioni gli elementi che ti servono e ne leggi il contenuto, ripulendolo dagli spazi con get_text.

Il punto più delicato è capire come è fatta la pagina. Prima di scrivere il codice apri il sito nel browser, usa lo strumento di ispezione e individua i tag e le classi che contengono i dati. Quei selettori sono la mappa che guiderà il tuo scraper.

Una volta ottenuti i dati puoi salvarli. Con poche righe li scrivi in un file CSV o li passi a pandas per creare una tabella pulita, pronta per l’analisi.

Scraping di siti dinamici e JavaScript

Molti siti moderni non inseriscono i contenuti direttamente nell’HTML iniziale, ma li caricano dopo, tramite JavaScript. In questi casi requests riceve una pagina quasi vuota e BeautifulSoup non trova nulla da estrarre. È l’ostacolo più frequente per chi inizia a fare scraping.

La soluzione è controllare un browser vero. Strumenti come Selenium e Playwright aprono una finestra, anche in modalità invisibile detta headless, aspettano che la pagina finisca di caricare e solo allora leggono il contenuto ormai completo.

Il prezzo da pagare è la velocità: automatizzare un browser è più lento e più pesante che scaricare puro HTML. Per questo conviene usarlo solo quando serve.

Esiste anche una terza via, spesso la migliore. Molti siti dinamici, dietro le quinte, chiamano delle API interne che restituiscono i dati in formato JSON. Analizzando le richieste di rete dal pannello del browser puoi individuare quelle chiamate e interrogarle direttamente con requests, ottenendo dati puliti senza automatizzare nulla.

Come gestire blocchi, paginazione e limiti

Uno scraper che funziona sul primo tentativo raramente regge alla prova dei siti reali. Presto ti scontri con protezioni, elenchi divisi su più pagine e richieste che vengono rifiutate. Sapere come reagire fa la differenza tra un progetto solido e uno che si blocca subito.

Il primo accorgimento è rallentare. Inviare centinaia di richieste al secondo mette sotto pressione il server e ti fa individuare in fretta. Inserisci pause tra una richiesta e l’altra e imposta un ritmo simile a quello di una persona che naviga.

Serve poi gestire la paginazione. Quando i dati sono distribuiti su decine di pagine, il tuo codice deve riconoscere il link alla pagina successiva e ripetere il ciclo finché ci sono risultati.

Alcuni siti bloccano le richieste che non sembrano provenire da un browser. Impostare uno User-Agent credibile, gestire i cookie e, nei casi più complessi, ruotare gli indirizzi IP con dei proxy aiuta a restare operativi. Ricorda però che aggirare in modo aggressivo le protezioni è un segnale che stai forzando la mano, e spesso conviene fermarsi e cercare una fonte alternativa.

Web scraping, dati e intelligenza artificiale

Lo scraping non è solo una scorciatoia per riempire un foglio di calcolo: è una delle porte d’ingresso principali ai dati che alimentano l’intelligenza artificiale. I modelli imparano dagli esempi, e quegli esempi vanno raccolti da qualche parte.

Con il web scraping in Python puoi costruire un dataset su misura per il tuo progetto: recensioni per analizzare il sentiment, testi per addestrare un modello linguistico, immagini per la visione artificiale, prezzi storici per un modello previsionale.

Non a caso Python è al centro sia dello scraping sia del machine learning. Gli stessi dati che raccogli con requests e BeautifulSoup possono passare senza attriti alle librerie di machine learning per addestrare un modello.

C’è però un aspetto da non sottovalutare: la qualità. Dati raccolti male, incompleti o pieni di duplicati producono modelli scadenti. La fase di pulizia, prima di addestrare un modello, conta spesso più dello scraping stesso.

Aspetti legali ed etici dello scraping

Il web scraping è uno strumento neutro, ma il modo in cui lo usi non lo è. Prima di lanciare uno scraper vale la pena fermarsi un momento a valutare cosa stai raccogliendo e da dove.

Il primo riferimento è il file robots.txt del sito, che indica quali sezioni i proprietari preferiscono non far percorrere ai programmi automatici. Non ha valore di legge, ma ignorarlo è un segnale di scarsa correttezza. Vanno lette anche le condizioni d’uso, perché alcuni servizi vietano esplicitamente lo scraping.

C’è poi il tema dei dati personali. Se raccogli informazioni che identificano delle persone entri nel campo del GDPR e devi avere una base giuridica valida per trattarle. Anche i contenuti protetti da copyright, come testi e immagini, non diventano liberi solo perché sono online.

La regola pratica è semplice: preferisci i dati pubblici e aggregati, non sovraccaricare i server, cita le fonti quando serve e, se esiste un’API ufficiale, usala. Uno scraping responsabile ti evita problemi e mantiene sano l’ecosistema da cui attingi.

Domande frequenti sul web scraping con Python

È legale fare web scraping?

Raccogliere dati pubblici in genere è lecito, ma dipende da cosa estrai e da come lo fai. Violare le condizioni d’uso di un sito, raccogliere dati personali senza base giuridica o riprodurre contenuti protetti può renderlo illegale. Verifica sempre robots.txt e i termini del servizio.

Qual è la migliore libreria Python per lo scraping?

Non ne esiste una assoluta. Per progetti piccoli e per imparare, la coppia requests più BeautifulSoup è la più comoda. Per raccolte su larga scala conviene Scrapy, mentre per i siti costruiti in JavaScript servono Selenium o Playwright.

Come faccio scraping di un sito che usa JavaScript?

Se i contenuti compaiono solo dopo il caricamento, usa un browser automatizzato come Selenium o Playwright, oppure individua le API interne che il sito chiama e interrogale direttamente con requests per ottenere i dati in JSON.

Serve saper programmare per fare scraping?

Un minimo di Python aiuta molto, ma le basi si imparano in fretta. Esistono anche strumenti senza codice per progetti semplici, che però mostrano presto i loro limiti quando i siti diventano complessi o i volumi crescono.

Conclusioni

Il web scraping con Python è una competenza concreta e sempre più richiesta, perché mette in collegamento due mondi: i dati sparsi nel web e gli strumenti che li trasformano in valore. Con poche librerie ben scelte puoi passare da un’idea a un dataset pronto all’uso in pochissimo tempo.

Parti in piccolo, con requests e BeautifulSoup su un sito semplice, poi cresci verso Scrapy, i siti dinamici e i progetti più ambiziosi. E ricorda che uno scraping fatto bene è anche uno scraping fatto con rispetto delle regole.

Se vuoi mettere subito a frutto i dati raccolti, il passo successivo è esplorare le librerie Python per l’intelligenza artificiale e capire come addestrare il tuo primo modello. Buon scraping.

FA

Franco Artigiano IA

Autore IA di IntelligenzaArtificiale.net, sotto la supervisione di Daniele Della Corte (MarketingSeoAgency.com).

Nota di trasparenza — questo articolo è firmato da un autore IA e pubblicato a cura di Daniele Della Corte (MarketingSeoAgency.com), che ne supervisiona qualità e fonti.
← Torna alla home