Cos'è ScrapeGraphAI
ScrapeGraphAI è una libreria Python open-source, rilasciata con licenza MIT, che unisce il web scraping tradizionale ai Large Language Model (LLM). L'idea di fondo è semplice: invece di istruire un programma su dove si trovano i dati dentro una pagina HTML (quale tag, quale classe CSS, quale percorso XPath), gli si dice cosa si vuole estrarre, in linguaggio naturale. Il risultato è un dizionario JSON con i dati richiesti, pronto per essere salvato in un database o alimentare un altro processo.
Il progetto è ospitato su GitHub all'indirizzo github.com/ScrapeGraphAI/Scrapegraph-ai, dove ha raccolto oltre 25.000 stelle, segno di una comunità ampia e attiva. Il codice è quasi interamente Python, viene mantenuto con release regolari e si installa con un semplice pip install scrapegraphai.
Perché lo scraping tradizionale si rompe
Chi ha mai scritto uno scraper con BeautifulSoup, Scrapy o Selenium conosce il problema: lo scraping classico si basa su selettori fissi. Si ispeziona la pagina, si individua che il prezzo sta dentro un div con classe product-price, si scrive il codice, e funziona. Finché il sito non cambia layout. A quel punto il selettore non trova più nulla, lo scraper restituisce dati vuoti o sbagliati, e bisogna intervenire a mano.
Per un'agenzia o una PMI che monitora decine o centinaia di fonti — cataloghi dei fornitori, listini dei competitor, portali di annunci, registri pubblici — questa manutenzione diventa un costo ricorrente e imprevedibile. Ogni restyling di un sito target si traduce in ore di sviluppo per riparare la pipeline.
ScrapeGraphAI affronta il problema spostando l'estrazione dal piano sintattico (la struttura dell'HTML) a quello semantico (il significato del contenuto). Il modello linguistico legge la pagina come farebbe una persona: capisce che quella stringa è un prezzo e quell'altra è il nome di un'azienda, indipendentemente da come è marcata nel codice. Se il sito cambia grafica, l'estrazione continua a funzionare, perché il significato non è cambiato.
Come funziona: una pipeline a grafo
L'architettura della libreria è basata su grafi orientati. Il processo di scraping viene scomposto in nodi discreti, ciascuno responsabile di un compito specifico: scaricare la pagina (con supporto a Playwright per il rendering JavaScript), ripulire e spezzare il contenuto in porzioni gestibili dal modello, sottoporre ogni porzione all'LLM con le istruzioni di estrazione, e infine unire le risposte parziali in un unico risultato coerente.
Questo meccanismo di suddivisione (chunking) serve anche a gestire il limite della finestra di contesto dei modelli: una pagina molto lunga viene tagliata in pezzi con sovrapposizione, ogni pezzo viene analizzato separatamente e le risposte vengono combinate nella fase finale della pipeline. I grafi pronti all'uso coprono i casi più comuni, ma chi ha esigenze particolari può costruire grafi personalizzati combinando i nodi disponibili.
Il rendering delle pagine con JavaScript pesante è affidato a Playwright, quindi la libreria riesce a leggere anche siti moderni costruiti con framework front-end, dove l'HTML grezzo restituito dal server non contiene ancora i dati visibili a schermo.
Le pipeline pronte all'uso
La libreria include diverse pipeline predefinite, ciascuna pensata per uno scenario diverso:
- SmartScraperGraph: il caso d'uso base. Si fornisce un prompt e un URL (o un file locale in formato HTML, XML, JSON o Markdown) e si ottiene l'estrazione da una singola pagina.
- SearchGraph: dato un prompt, interroga un motore di ricerca ed estrae le informazioni dai primi risultati, aggregando più pagine in un'unica risposta.
- SmartScraperMultiGraph: applica lo stesso prompt a una lista di URL, utile per elaborare in parallelo interi cataloghi o elenchi di schede.
- ScriptCreatorGraph: invece di estrarre direttamente i dati, genera uno script Python riutilizzabile che esegue lo scraping con librerie classiche.
- SpeechGraph: estrae il contenuto e lo converte anche in un file audio.
Esistono inoltre varianti che sfruttano modelli multimodali per analizzare anche le immagini presenti nelle pagine e descriverle.
Quali modelli AI si possono usare
Uno dei punti di forza è l'essere model-agnostic. La configurazione accetta modelli cloud — OpenAI (GPT-4o e GPT-4o-mini), Google Gemini, Groq, Azure OpenAI, Anthropic e altri — oppure modelli eseguiti interamente in locale tramite Ollama, ad esempio la famiglia Llama. Cambiare modello significa cambiare una riga nel dizionario di configurazione.
L'opzione locale è rilevante per due motivi. Il primo è economico: il costo per pagina si riduce al costo dell'infrastruttura propria, senza pagare token a un provider esterno. Il secondo è la riservatezza: i contenuti delle pagine e i dati estratti non lasciano mai i propri server, un requisito importante quando si trattano informazioni sensibili o coperte da accordi di confidenzialità.
Open-source o API gestita
Il progetto esiste in due forme. La libreria open-source si installa e si esegue sulla propria infrastruttura: si portano le proprie chiavi LLM, si configurano browser e proxy, e si ha il controllo completo su costi e dati. Accanto esiste un'API cloud gestita dalla stessa azienda, accessibile tramite SDK Python e JavaScript/TypeScript, che si occupa di rendering, stealth e anti-bot, con un modello a crediti. La scelta dipende dal contesto: la libreria conviene a chi vuole controllo e privacy, l'API a chi privilegia la velocità di messa in produzione e non vuole gestire infrastruttura.
A cosa serve per PMI e agenzie
Gli scenari concreti sono numerosi. Nella lead generation B2B, si possono estrarre automaticamente dati di contatto e informazioni aziendali da directory, siti di settore e registri pubblici, mappandoli direttamente in schemi strutturati pronti per il CRM. Nel monitoraggio competitivo, si possono controllare periodicamente listini e schede prodotto dei competitor senza riscrivere gli scraper a ogni aggiornamento grafico. Nel content intelligence, si aggregano notizie, bandi o annunci da molte fonti in un unico flusso normalizzato. Per le agenzie, la riduzione del tempo di manutenzione degli scraper si traduce direttamente in margini più sani sui progetti di data intelligence.
I limiti da conoscere
Onestà divulgativa impone di segnalare i punti deboli. Primo: ogni pagina viene letta da un LLM, quindi il costo in token (o in crediti, nella versione cloud) cresce linearmente con il volume. Per milioni di pagine, lo scraping classico resta più economico. Secondo: il modello può allucinare, cioè inventare o deformare un campo che non esiste nella pagina; su dati critici serve sempre un livello di validazione a valle. Terzo: la libreria open-source non include una rete di proxy né soluzioni anti-bot evolute — siti protetti da sistemi come Cloudflare Enterprise possono bloccare la richiesta prima ancora che il modello la legga. Quarto: non è uno strumento no-code; richiede competenza Python di base.
Come provarlo
L'installazione richiede Python e pochi comandi:
pip install scrapegraphai
playwright install
Un esempio minimo con un modello locale via Ollama:
from scrapegraphai.graphs import SmartScraperGraph
config = {
"llm": {"model": "ollama/llama3.2", "format": "json"},
"verbose": True,
"headless": True,
}
scraper = SmartScraperGraph(
prompt="Estrai nome azienda, descrizione dell'attività e contatti",
source="https://example.com",
config=config,
)
print(scraper.run())
Il consiglio pratico è partire da pagine semplici per capire il formato dell'output, poi passare a target più complessi una volta definito lo schema dei dati desiderato.
Dove trovarlo
- Repository GitHub: github.com/ScrapeGraphAI/Scrapegraph-ai (licenza MIT)
- Documentazione: scrapegraph-ai.readthedocs.io
- Pacchetto PyPI:
pip install scrapegraphai - SDK managed: scrapegraph-py (Python) e scrapegraph-js (JavaScript/TypeScript)
In sintesi: ScrapeGraphAI non elimina lo scraping tradizionale, ma offre un'alternativa concreta quando la manutenzione dei selettori costa più dei token. Per team che estraggono dati da molte fonti eterogenee e mutevoli, è oggi una delle librerie più mature dell'ecosistema open-source.
