# 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](https://quantumproxies.io/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:

```python
import requests

def fetch_markdown(url, api_key):
    r = requests.post(
        "https://api.quantumproxies.io/v1/scraper/extract",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"url": url, "format": "markdown"},
        timeout=(5, 120),
    )
    r.raise_for_status()
    return r.json()["payload"]["content"]  # 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](https://quantumproxies.io/blog/feeding-llms-fresh-web-data-2026). Se prendi solo una cosa da questo articolo: non inviare mai a un modello il sorgente grezzo della pagina.

![Una pipeline di estrazione con LLM in quattro fasi: scaricare la pagina tramite proxy e un livello di rendering, pulirla in markdown, interrogare il modello con uno schema che chiede null quando un campo manca, e validare il JSON; la scheda nota che il markdown riduce l'input di un ordine di grandezza, mentre l'HTML grezzo può costare dieci volte tanto in token.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335211/blog/generated/qp-b9-084-diag1.png)
*Il modello non tocca mai il web live. Il recupero e la pulizia avvengono prima, il markdown riduce il conto dei token, e uno schema mantiene il JSON onesto.*

## 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](https://quantumproxies.io/extract-api) collassa recupero, pulizia ed estrazione in una sola richiesta così salti completamente l'impianto idraulico:

```bash
curl -X POST "https://api.quantumproxies.io/v1/scraper/extract" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/xyz",
    "ai_schema": {
      "type": "object",
      "properties": {
        "title":    {"type": "string"},
        "price":    {"type": "number"},
        "in_stock": {"type": "boolean"},
        "rating":   {"type": ["number", "null"]}
      },
      "required": ["title", "price", "in_stock"]
    },
    "ai_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.

```python
def validate(record, schema):
    for field in schema.get("required", []):
        if record.get(field) is None:
            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](https://quantumproxies.io/blog/headless-browser-vs-http-requests-cost). Ottieni una pagina vuota invece del contenuto e la soluzione è solitamente il rendering, trattato in [empty page, missing data](https://quantumproxies.io/blog/scraper-returns-empty-page-javascript).

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](https://quantumproxies.io/blog/build-vs-buy-scraping-infrastructure).

![Estrazione con LLM e selettori CSS a confronto: l'LLM gestisce siti diversi e sopravvive ai redesign, i selettori gestiscono un unico sito stabile ad alto volume, in modo deterministico ed economico; la scheda associa mille layout e redesign frequenti all'estrazione con LLM, un unico target stabile ai selettori e la maggior parte delle pipeline a entrambi.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335212/blog/generated/qp-b9-084-diag2.png)
*L'estrazione LLM vince su siti vari e in cambiamento; i selettori vincono su un obiettivo stabile ad alto volume. La maggior parte delle pipeline reali utilizza entrambi.*

## 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.

[Trasforma qualsiasi pagina in JSON con l'Extract API](https://quantumproxies.io/extract-api)
