AI Web Scraping: Estrazione LLM, Prompt-to-JSON e Costo
L'estrazione LLM trasforma qualsiasi pagina in JSON pulito da un prompt in inglese semplice — senza selettori da mantenere. Ma il modello non può recuperare la pagina e l'HTML grezzo consuma velocemente i token. Ecco come farlo correttamente.
L'AI web scraping significa puntare un modello linguistico su una pagina e chiedere, in inglese semplice, i campi che vuoi restituire come JSON — senza scrivere selettori CSS, senza parser da mantenere quando il layout cambia. È davvero trasformativo per estrazioni disordinate, varie o occasionali. È anche ampiamente frainteso, motivo per cui le persone finiscono per pagare per raschiare poche centinaia di pagine e ottenere dati allucinati. Due fatti risolvono la maggior parte di questa confusione: un modello linguistico non può recuperare una pagina web — ragiona solo sul testo che gli fornisci — e alimentarlo con HTML grezzo è il modo più veloce per bruciare il tuo budget di token. Questa guida copre il modello di estrazione che funziona, quando supera i selettori, e come tenere sotto controllo sia i costi che le allucinazioni.
La cosa che nessuno dice: il modello non può recuperare
La parte difficile dell'AI scraping non è l'AI. Un chatbot non può caricare in modo affidabile una pagina live — ha bisogno di un motore dedicato per recuperare prima l'HTML, poi ragiona su qualunque testo tu fornisca. Quindi una pipeline di estrazione LLM è in realtà una pipeline di scraping con un parser intelligente aggiunto alla fine, e la metà di scraping è dove le cose si rompono: gestione dei bot, rendering JavaScript, blocchi IP. Risolvi il recupero con proxy e un livello di rendering, e l'estrazione diventa la parte facile. Il modo pulito per ottenere pagine è un scraper API che gestisce la rotazione e il rendering e restituisce markdown, che — come mostra la sezione successiva — è anche l'input più economico possibile per un modello:
import requests
def fetch_markdown(url, api_key):
r = requests.get(
"https://api.quantumproxies.io/scrape",
params={"url": url, "render": "auto", "output": "markdown"},
headers={"Authorization": f"Bearer {api_key}"},
timeout=(5, 40),
)
r.raise_for_status()
return r.json()["markdown"] # nav/ads stripped, ready for the model
Perché markdown, non HTML, è la vera leva di costo
Il singolo fattore più grande del costo dell'AI scraping è quanti token spingi attraverso il modello, e l'HTML grezzo è per lo più token che non vuoi: stili inline, tag script, attributi di tracciamento, navigazione, footer. Converti la pagina in markdown pulito — o estrai solo il contenuto principale — prima dell'estrazione e riduci regolarmente la dimensione dell'input di un ordine di grandezza, il che riduce i costi dello stesso fattore e, come bonus, riduce le allucinazioni perché il modello vede il contenuto invece del chrome. Questo è il motivo per cui markdown-first è lo standard per alimentare i modelli, lo stesso principio dietro alimentare gli LLM con dati web freschi. Se prendi solo una cosa da questo articolo: non inviare mai a un modello il sorgente grezzo della pagina.

Prompt-to-JSON con uno schema
Una volta che hai testo pulito, l'estrazione è una singola chiamata: descrivi i campi che vuoi, passa uno schema in modo che l'output sia strutturato e istruisci il modello a restituire null piuttosto che inventare quando un campo è assente. Un extraction API collassa recupero, pulizia ed estrazione in una sola richiesta così salti completamente l'impianto idraulico:
curl -X POST "https://api.quantumproxies.io/extract" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/product/xyz",
"schema": {
"title": "string",
"price": "number",
"in_stock": "boolean",
"rating": "number|null"
},
"prompt": "Extract the product. Use null for anything not present."
}'
Lo schema svolge un doppio compito: forza una forma prevedibile per il codice a valle e vincola il modello, che è la prima linea di difesa contro i campi allucinati. Valida la risposta contro lo stesso schema e rifiuta tutto ciò che non si adatta — un prezzo inventato è peggio di uno mancante.
def validate(record, schema):
for field, kind in schema.items():
v = record.get(field)
if v is None and "null" not in kind:
raise ValueError(f"missing required field: {field}")
return record # only trust records that satisfy the schema
Quando l'estrazione LLM supera i selettori CSS — e quando no
L'estrazione AI non è un aggiornamento universale; è uno strumento diverso con una curva di costo diversa. Usalo quando il lavoro è vario o instabile — raschiare mille siti con mille layout, un sito che si ridisegna costantemente, contenuti non strutturati come recensioni o elenchi dove non esiste un selettore pulito, o un lavoro occasionale dove scrivere selettori non vale il tempo. Rimani con i selettori CSS o XPath quando stai martellando un sito stabile ad alto volume: i selettori sono deterministici, praticamente gratuiti per pagina, e non allucinano mai. Il modello maturo è ibrido — selettori per i tuoi obiettivi principali ad alto volume, estrazione LLM per la coda lunga e i siti che continuano a cambiare.
La disciplina dei costi trasforma questo da un esperimento a una produzione. Oltre al markdown-first, cache aggressivamente in modo da non dover mai ri-estrarre una pagina invariata, abbina la dimensione del modello alla difficoltà del compito — un modello piccolo gestisce bene l'estrazione di campi semplici — e batch dove l'API lo consente. Il rendering è una voce di costo a sé stante; rendi solo le pagine che hanno veramente bisogno di JavaScript, una decisione che quantifichiamo in render only when you must. Ottieni una pagina vuota invece del contenuto e la soluzione è solitamente il rendering, trattato in empty page, missing data.
Una parola sulla strada gratuita e open-source, poiché è ciò che la maggior parte delle persone cerca per primo. Le librerie di estrazione open-source sono eccellenti per apprendere il modello e per lavori piccoli, ma ti restituiscono i due problemi difficili con cui questo articolo ha aperto: devi ancora recuperare le pagine oltre la gestione dei bot, e paghi ancora per qualunque modello faccia l'estrazione. 'Gratuito' di solito significa codice gratuito più i tuoi costi di proxy e token. È un buon compromesso per un progetto hobbistico o una prova di concetto; a volume di produzione la manutenzione del livello di recupero è esattamente ciò che i team finiscono per esternalizzare, una decisione build-versus-buy che illustriamo in DIY scraper stack vs a scraper API.

Domande frequenti
ChatGPT può raschiare un sito web?
Non da solo. Un modello linguistico non può recuperare e rendere in modo affidabile una pagina live — ragiona sul testo che fornisci. Per usare l'AI per lo scraping abbini un motore di scraping dedicato, che recupera e pulisce la pagina, con il modello, che estrae dati strutturati dal risultato. Il motore di scraping gestisce proxy, rendering e blocchi; il modello si occupa di trasformare il contenuto in JSON.
Come riduco il costo dell'AI web scraping?
Converti le pagine in markdown o estrai il contenuto principale prima di inviare qualsiasi cosa a un modello — l'HTML grezzo può essere dieci volte i token per la stessa informazione. Poi cache le pagine invariate, usa un modello più piccolo per l'estrazione di campi semplici, rendi JavaScript solo quando una pagina lo richiede, e batch le richieste. Il volume dei token è il costo dominante, quindi ridurre la dimensione dell'input è l'ottimizzazione con il massimo effetto leva.
L'AI web scraping allucina dati errati?
Può, specialmente quando alimentato con HTML grezzo rumoroso o richiesto di campi che non sono sulla pagina. Proteggiti pulendo l'input, passando uno schema esplicito, istruendo il modello a restituire null quando un valore è assente, e validando ogni risposta contro quello schema prima di fidarti. Un campo mancante puoi riprovare; uno inventato con sicurezza corrompe silenziosamente il tuo dataset.
L'estrazione LLM è migliore dei selettori CSS?
Dipende dal lavoro. L'estrazione LLM vince quando i layout variano o cambiano spesso e quando scrivere selettori non vale la pena, perché non ha bisogno di selettori e sopravvive ai redesign. I selettori CSS vincono su un singolo sito stabile ad alto volume: sono deterministici e molto più economici per pagina. La maggior parte delle pipeline di produzione utilizza selettori per obiettivi principali e estrazione LLM per la coda lunga.
L'AI web scraping è potente una volta che smetti di trattare il modello come uno scraper. Recupera pulito con proxy, alimenta markdown non HTML, vincola l'output con uno schema, e riserva l'estrazione LLM per i lavori dove la sua flessibilità giustifica il costo dei token. Questa è la differenza tra una demo elegante e una pipeline che puoi eseguire ogni giorno.