Internet è, in sostanza, un gigantesco database, solo organizzato in modo molto scomodo. I prezzi si mescolano a immagini e pulsanti, le statistiche si nascondono nelle tabelle, gli annunci sono sparsi su centinaia di pagine. «Raccogliere dati da un sito» significa trasformare questa poltiglia visiva in una tabella o in un file ordinato con cui si può lavorare: fare calcoli, confrontare, costruire grafici.
Questo articolo è una mappa del territorio. Spiega che tipi di dati esistono, con quali metodi si estraggono (dal copia-incolla manuale ai programmi robot), dove passano i confini legali ed etici, e analizza scenari concreti per i diversi tipi di dati. I dati personali restano fuori: del perché parleremo a parte.
Parte 1. Prima un po’ di teoria — ma senza annoiare
Com’è fatto un sito web
Quando apri una pagina, il browser riceve un file di testo nel linguaggio HTML: un markup, un insieme di «scatoline» annidate con le loro etichette. Il titolo sta nella scatolina contrassegnata «titolo», il prezzo nella scatolina «prezzo», e così via. Tu vedi una bella pagina, ma sotto c’è testo strutturato.
La raccolta di dati (in inglese web scraping, letteralmente «raschiatura») è esattamente questo processo: un programma legge quel testo, individua le scatoline giuste e ne estrae il contenuto. La grande rivelazione per chi inizia: quello che vedi sullo schermo è quasi sempre disponibile come testo; bisogna solo arrivarci.
Due mondi: HTML e API
Ci sono due modi radicalmente diversi in cui un sito può consegnare i suoi dati.
Attraverso la pagina HTML. I dati sono «fusi» nella stessa pagina mostrata alla persona. Per estrarli bisogna analizzare l’HTML — farne il parsing — cercando quelle famose scatoline. Funziona quasi sempre, ma è la via più fragile: se il designer cambia il layout, il tuo raccoglitore si rompe.
Attraverso un’API. Molti siti hanno un «ingresso di servizio»: un’interfaccia di programmazione (Application Programming Interface) pensata apposta per le macchine. Invii una richiesta del tipo «dammi il meteo di Milano» e ricevi in risposta dati puliti in un formato ordinato (di solito JSON, un testo di coppie «chiave: valore»). È il metodo più affidabile e più cortese, quando è disponibile. Meteo, tassi di cambio, mappe, finanza, statistiche: tutto questo, di regola, ha un’API.
Regola pratica: cerca prima l’API e, solo se non esiste, fai il parsing dell’HTML.
Dati strutturati e non strutturati
- Strutturati — già ordinati e incasellati: tabelle, listini, cataloghi. Sono i più facili da raccogliere.
- Non strutturati — testo continuo: articoli, recensioni, post. Raccogliere il testo in sé non è difficile, ma per estrarne il significato (il sentiment di una recensione, le aziende citate) serve un’elaborazione aggiuntiva, spesso con l’aiuto dell’AI.
Parte 2. Il quadro legale ed etico
Non è una formalità da scorrere in fretta. Ignorare i limiti è il modo più comune di procurarsi guai.
Il file robots.txt. Quasi ogni sito ha all’indirizzo sito.com/robots.txt un file di testo in cui il proprietario indica quali sezioni chiede ai robot di non toccare. Non è una legge, piuttosto un «galateo», ma ignorarlo è cattiva educazione e, a volte, un motivo di blocco.
Le condizioni d’uso (Terms of Service). Molti siti vietano espressamente la raccolta automatizzata nelle proprie condizioni d’uso. Violarle è già una questione di rapporti contrattuali, e le grandi piattaforme (marketplace, social network) per questo arrivano in tribunale.
Il carico sul server. Se il tuo robot invia migliaia di richieste al secondo, di fatto stai facendo al sito un mini-DDoS. Raccogliere con educazione significa fare pause tra le richieste e lavorare nelle ore di basso traffico.
Il diritto d’autore. I fatti in sé (il prezzo di un prodotto, la temperatura dell’aria) non sono protetti dal diritto d’autore. I testi degli articoli, le fotografie e le recensioni, invece, lo sono. Raccogliere per analizzare è una cosa; ripubblicare sul proprio sito, un’altra.
I dati personali: la zona a parte e la più pericolosa. Nomi, telefoni, indirizzi, volti nelle foto, corrispondenza: tutto questo è regolato dalle leggi sulla protezione dei dati (il GDPR in Europa e norme analoghe in altri paesi). Raccogliere dati personali senza una base giuridica può finire in sanzioni pesanti e responsabilità penale. Per questo in questo articolo parliamo volutamente solo di dati anonimi, in genere pubblici e fattuali: prezzi, meteo, statistiche, assortimento, titoli di notizie e simili.
Un criterio di buon senso: sto raccogliendo fatti accessibili a tutti per analizzarli, senza sovraccaricare il server e senza appropriarmi di contenuti altrui? Se la risposta è sì, molto probabilmente sei nella zona sicura. Se si tratta di dati personali o di rivendere contenuti altrui, fermati e consulta uno specialista.
Parte 3. Gli strumenti: dal più semplice al più potente
I modi per raccogliere dati formano un intero spettro. La scelta dipende da quanti dati ti servono, con quale frequenza e dalla tua disponibilità a programmare.
Livello 0. Copia manuale
Suona primitivo, ma se ti servono 20 righe una volta sola, seleziona la tabella con il mouse e incollala in Excel. Non serve il cannone per sparare a una mosca. L’automazione ripaga quando i dati sono tanti o vanno raccolti con regolarità.
Livello 1. Funzioni direttamente nel foglio di calcolo
Google Sheets sa importare dati dai siti con funzioni integrate, senza una sola riga di codice:
=IMPORTHTML("url"; "table"; 1)— estrae la prima tabella della pagina (funziona a meraviglia, ad esempio, con le tabelle di Wikipedia).=IMPORTXML("url"; "query")— recupera elementi specifici tramite il loro percorso all’interno della pagina.=IMPORTDATA("url")— carica un file di dati già pronto (CSV).
È la partenza ideale per chi non programma: tutto avviene in un foglio di calcolo familiare e i dati possono aggiornarsi da soli.
Livello 2. Estensioni del browser
Plugin gratuiti che trasformano la raccolta in un «indica con il mouse cosa raccogliere»:
- Web Scraper (estensione per Chrome) — clicchi sugli elementi direttamente nella pagina, spieghi al robot «questo è il nome, questo è il prezzo», e lui percorre tutte le pagine da solo.
- Instant Data Scraper — trova automaticamente tabelle ed elenchi nella pagina e propone di scaricarli con un solo pulsante. Velocissimo per i casi semplici.
Vanno bene quando il sito è semplice e la raccolta non è regolare.
Livello 3. Piattaforme no-code (senza codice, ma più potenti)
Servizi completi con interfaccia visuale, pensati per volumi seri:
- Octoparse, ParseHub — configuri la raccolta con il mouse e la piattaforma si occupa da sola dei siti complessi, della paginazione e dell’esecuzione programmata.
- Apify — un marketplace di raccoglitori già pronti per i siti più popolari: spesso quello che ti serve è già stato scritto, resta solo da lanciarlo.
- Bright Data, Octoparse Cloud — soluzioni cloud su scala industriale, inclusa l’elusione dei blocchi (ne parliamo più avanti). Qui siamo già nel terreno a pagamento, orientato alle aziende.
Pro: non serve programmare. Contro: comodità e scala si pagano, e la flessibilità resta comunque inferiore a quella del codice scritto in casa.
Livello 4. Programmazione (massima flessibilità)
Quando serve il controllo totale, si scrive codice. Il linguaggio più popolare per questo è Python, in buona parte proprio grazie alle sue comode librerie per la raccolta di dati. Gli strumenti principali:
- requests — lo «scaricatore» di pagine: chiede al sito l’HTML e lo riceve.
- BeautifulSoup — lo «smontatore»: trova nell’HTML ricevuto le scatoline giuste. La coppia
requests+BeautifulSoupè il kit classico del principiante. - Scrapy — un intero framework per progetti seri: segue i link da solo, percorre migliaia di pagine e salva il risultato in file. Per i compiti grandi.
- Selenium e Playwright — pilotano un browser vero come farebbe un robot-umano: cliccano i pulsanti, scorrono, compilano i campi. Servono per i siti «capricciosi» (vedi più avanti la parte sul JavaScript).
- pandas — non serve a raccogliere ma a elaborare: trasforma il raccolto in una tabella, lo pulisce, fa i calcoli.
Non è obbligatorio scrivere il codice a mano: gli assistenti AI di oggi generano questi script partendo da una descrizione testuale del compito. La soglia di ingresso negli ultimi anni si è abbassata di colpo.
Il livello «senza raccogliere nulla»: dati già pronti
Prima di fare scraping, controlla se qualcuno ha già raccolto tutto:
- Dataset aperti — Kaggle, i portali open data delle amministrazioni pubbliche (dati.gov.it, data.europa.eu), gli istituti di statistica.
- Feed RSS — molti siti di notizie e blog offrono ancora i contenuti recenti come feed leggibile dalle macchine. Semplice e legale.
- API ufficiali — lo ripetiamo ancora una volta: se esiste, è l’opzione migliore.
Parte 4. Le difficoltà principali e come si superano
Siti costruiti in JavaScript
Molti siti moderni consegnano prima una pagina quasi vuota e poi «disegnano» il contenuto con gli script, direttamente nel browser. Un semplice requests vedrà il vuoto. La soluzione sono gli strumenti che avviano un browser vero (Selenium, Playwright) e aspettano che tutto si carichi. È più lento, ma vede tutto quello che vede una persona.
Paginazione ed elenchi
I dati raramente stanno su una sola pagina: di solito c’è un «1, 2, 3 … 500» in fondo o uno scroll infinito. Bisogna insegnare al raccoglitore a passare da una pagina all’altra o a scorrere verso il basso finché i record non finiscono.
Protezione anti-bot
Ai siti lo scraping intensivo non piace, e alzano barriere: CAPTCHA («dimostra di essere umano»), blocco dell’indirizzo IP alle richieste frequenti, obbligo di login. Si aggirano con pause tra le richieste, rotazione degli indirizzi (server proxy) e mascherandosi da browser normale. Qui vale la pena ricordare: più l’elusione della protezione è aggressiva, più sei vicino a violare le condizioni del sito. È una zona grigia in cui è facile oltrepassare il limite.
Pulizia dei dati
Il raccolto non arriva quasi mai perfetto: spazi di troppo, la valuta mescolata alle cifre («1.990 €» invece di 1990), duplicati, buchi. Elaborazione e pulizia sono di solito una parte del lavoro non inferiore alla raccolta stessa.
Parte 5. Scenari per i diversi tipi di dati
E ora la parte più pratica. Vediamo come affrontare tipi di dati concreti.
Prezzi e prodotti (monitoraggio dei prezzi, assortimento)
Perché: tenere d’occhio i prezzi dei concorrenti, intercettare gli sconti, analizzare il mercato, confrontare le offerte.
Particolarità: i marketplace sono i siti meglio protetti di internet e in genere vietano espressamente lo scraping nelle loro regole. I dati si caricano con gli script, i prezzi cambiano e di mezzo ci sono seri sistemi anti-bot.
Come affrontarlo: per un compito una tantum, le estensioni del browser. Per un monitoraggio regolare, le piattaforme no-code (su Apify ci sono spesso raccoglitori pronti per i grandi negozi) o codice proprio con automazione del browser. Molte grandi piattaforme offrono API di affiliazione o di prodotto: quella è la via legale. Fai particolare attenzione alle regole di ciascuna piattaforma: per lo scraping bloccano gli account e fanno causa.
Notizie e articoli (testi, titoli)
Perché: monitoraggio delle citazioni di un brand o di un tema, raccolta di materiali per l’analisi, controllo dell’agenda informativa.
Come affrontarlo: prima di tutto i feed RSS: è legale e semplice. Se il feed non c’è, aiutano le API di notizie già pronte (NewsAPI, GDELT e simili). Per i singoli siti, la coppia requests + BeautifulSoup. Ricorda il diritto d’autore: raccogliere per analizzare sì, ripubblicare testi altrui no.
Tabelle e statistiche (Wikipedia, dati pubblici, annuari)
Perché: popolazione delle città, statistiche sportive, serie storiche, dati scientifici.
Come affrontarlo: è il genere più facile. Una tabella di Wikipedia si estrae in un minuto con la sola funzione IMPORTHTML in Google Sheets. In Python la libreria pandas sa leggere tutte le tabelle di una pagina con un solo comando (read_html). E controlla anche i portali open data: lì molto è già pubblicato come file pronto.
Annunci (immobili, auto, offerte di lavoro)
Perché: analisi del mercato degli affitti, stipendi medi per professione, andamento dei prezzi delle auto.
Particolarità: di annunci così ce ne sono migliaia, sparsi su moltissime pagine, e i portali spesso si proteggono. Importante: gli annunci contengono spesso dati personali (i contatti del venditore); non vanno raccolti e spesso è illegale farlo. Prendi solo l’anonimo: prezzo, superficie, zona, caratteristiche.
Come affrontarlo: piattaforme no-code con paginazione, o Scrapy per i grandi volumi. Molti portali hanno API per i partner.
Recensioni e valutazioni
Perché: capire cosa viene lodato e cosa criticato di un prodotto, confrontare le reputazioni, trovare i punti dolenti.
Particolarità: raccogliere il testo della recensione è la parte facile; il valore sta nell’analisi. L’approccio moderno: raccogliere le recensioni e poi passarle a un modello AI che ne determini il sentiment (positivo/negativo) ed estragga i temi. I nomi degli autori non si raccolgono: solo testo, punteggio e data.
Finanza (quotazioni, tassi di cambio, cripto)
Perché: analisi di mercato, monitoraggio del portafoglio, dati storici per il backtesting.
Come affrontarlo: qui le API ci sono quasi sempre, e spesso gratuite o semi-gratuite: Yahoo Finance, Alpha Vantage, le API delle borse, quelle delle banche centrali per i tassi di cambio (la BCE pubblica i tassi di riferimento dell’euro). Fare parsing dell’HTML qui non serve quasi mai: sono dati finanziari e vengono consegnati alle macchine puliti, di proposito.
Meteo e dati scientifici o ambientali
Perché: previsioni, osservazioni storiche, analisi climatica, incrocio con altri dati.
Come affrontarlo: esclusivamente via API (OpenWeatherMap, Open-Meteo, i servizi delle agenzie meteorologiche). Fare scraping dei siti meteo non ha senso: l’API è più comoda e affidabile. Molte sono gratuite per un uso moderato.
Immagini e contenuti multimediali
Perché: dataset per l’addestramento dell’AI, collezioni per l’analisi, archiviazione.
Particolarità: tecnicamente raccogliere immagini è facile (gli indirizzi stanno nell’HTML). Legalmente è la zona più scivolosa: le fotografie sono protette dal diritto d’autore e, se ci sono persone, si aggiungono i dati personali. La strada sicura è lavorare con dataset dedicati con licenze aperte (Unsplash, Wikimedia Commons, raccolte con permesso d’uso esplicito).
Mappe e dati geografici
Perché: punti sulla mappa (bar, stazioni di servizio), percorsi, coordinate, superfici delle zone.
Come affrontarlo: attraverso le API dei servizi cartografici (OpenStreetMap è completamente aperto e gratuito; esistono API a pagamento delle grandi piattaforme di mappe). OpenStreetMap, inoltre, è di per sé un’enorme base di geodati aperta, scaricabile per intere regioni.
Dati sportivi
Perché: statistiche delle partite, risultati, formazioni, storico delle prestazioni.
Come affrontarlo: esistono API sportive specializzate (alcune gratuite per i dati di base). Le tabelle dei risultati si prendono facilmente anche da Wikipedia e dai siti di riferimento con IMPORTHTML o pandas.
Social network (metriche pubbliche, non personali)
Perché: analisi dei trend, popolarità degli hashtag, citazioni di un tema.
Particolarità: la categoria più delicata dopo i dati personali diretti. I social network sono blindati sul piano tecnico e legale, le loro regole vietano lo scraping quasi sempre, e la maggior parte dei dati che contengono è personale. L’unica via sicura sono le API ufficiali delle piattaforme, e soltanto indicatori aggregati e anonimi (quanti post su un tema, il sentiment complessivo), senza raccogliere profili di persone specifiche.
Parte 6. Come scegliere l’approccio: guida rapida
Scorri le domande dall’alto in basso e fermati al primo «sì»:
- E se i dati fossero già raccolti? → Controlla Kaggle, i portali open data, gli RSS.
- Il sito ha un’API ufficiale? → Usala. È l’opzione migliore.
- Ti serve poca roba, una volta sola? → Copia a mano o con un’estensione del browser.
- È una tabella? →
IMPORTHTMLin Google Sheets opandasin Python. - Raccolta regolare, ma senza voglia di programmare? → Una piattaforma no-code (Octoparse, ParseHub, Apify).
- Serve il controllo totale o il compito è atipico? → Python:
requests+BeautifulSoup; per i siti complessi, Playwright/Selenium; per la scala, Scrapy.
E a ogni passo tieni a mente i tre limiti: robots.txt e regole del sito, carico sul server e, tassativamente, niente dati personali.
Conclusione
La raccolta di dati dai siti web è uno spettro, non una tecnologia sola. A un estremo, selezionare una tabella con il mouse e incollarla in Excel; all’altro, un framework che percorre migliaia di pagine secondo un calendario. In mezzo, le funzioni dei fogli di calcolo, le estensioni del browser, le piattaforme no-code e le librerie di programmazione. Lo strumento giusto lo determinano il volume, la regolarità e la tua disponibilità a programmare (che, grazie agli assistenti AI, oggi non è più una barriera così alta).
L’essenziale da portare a casa: cerca prima i dati già pronti e le API, fai il parsing dell’HTML solo quando non c’è alternativa, rispetta le regole e i server dei siti e stai alla larga dai dati personali. Tecnicamente si può raccogliere quasi tutto, ma il buon lavoro con i dati non comincia dalla domanda «come lo estraggo?», bensì da «ne ho il diritto, e ne vale la pena?».