> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Anatomia di un web scraper

> Ogni web scraper segue la stessa pipeline: recupera, esegue il rendering, individua, estrae, naviga e archivia. Ecco le fasi e come si collegano.

Un web scraper non è un unico elemento, ma una pipeline. Che tu lo scriva in Python, controlli direttamente un browser headless o lo crei visivamente in uno strumento no-code, le stesse fasi si susseguono nel medesimo ordine. Conoscerle permette di capire molto più facilmente dove uno scraper smette di funzionare, dove rallenta e quale tecnica risolve ciascun problema.

<Steps>
  <Step title="Recupera la pagina">
    Invia una richiesta HTTP e riceve il codice HTML.
  </Step>

  <Step title="Esegue il rendering della pagina">
    Esegue il codice JavaScript della pagina in un browser reale.
  </Step>

  <Step title="Individua i dati">
    Identifica gli elementi con XPath o selettori CSS.
  </Step>

  <Step title="Estrae e perfeziona">
    Estrae i valori e li ripulisce con espressioni regolari.
  </Step>

  <Step title="Naviga nel sito">
    Gestisce l'impaginazione e le pagine protette da accesso.
  </Step>

  <Step title="Archivia l'output">
    In CSV, JSON, un database o un'API a valle.
  </Step>
</Steps>

Le prime cinque fasi vengono eseguite in sequenza su ogni pagina; la fase **naviga** torna a **recupera** per la pagina successiva e l'intero ciclo viene eseguito su larga scala, nel cloud, dietro Proxy a rotazione e superando i CAPTCHA.

## Recuperare la pagina

Tutto inizia con una richiesta. Lo scraper invia una richiesta HTTP a un URL e riceve una risposta, solitamente in HTML e talvolta in JSON. Per le semplici pagine sottoposte a rendering lato server, questo singolo passaggio fornisce tutto il necessario. Il problema è che la risposta contiene soltanto il payload *iniziale* inviato dal server; su molti siti moderni si tratta di una struttura quasi vuota.

## Eseguire il rendering della pagina

Quando un sito crea i contenuti con JavaScript, i dati desiderati non sono presenti nell'HTML iniziale: compaiono solo dopo l'esecuzione degli script della pagina. Il rendering esegue questi script in un browser reale, facendo apparire tutti i contenuti. Il [runtime del browser](/docs/it/academy/browser-runtime-landscape) utilizzato determina la fedeltà di caricamento della pagina e il consumo di memoria e tempo; costituisce inoltre il fulcro dell'[estrazione da pagine con rendering JavaScript](/docs/it/academy/scrape-javascript-pages).

## Individuare i dati

Quando la pagina è completamente caricata, lo scraper deve identificare gli elementi specifici desiderati, ad esempio un prezzo, un titolo o una riga di una tabella. A tale scopo si usano [XPath o selettori CSS](/docs/it/academy/xpath-css-selectors), che descrivono *dove* si trova un elemento nella struttura della pagina. La qualità dei selettori fa la differenza tra uno scraper che resiste a piccole modifiche del layout e uno che smette di funzionare a ogni aggiornamento del sito.

## Estrarre e perfezionare

Individuare un elemento consente di ottenerne il contenuto grezzo; l'estrazione recupera il valore e il perfezionamento lo ripulisce. Un prezzo estratto potrebbe presentarsi come `"$1,299.00 USD"`, mentre occorre soltanto il numero. Le [espressioni regolari e le regole di post-elaborazione](/docs/it/academy/refining-data-with-regex) rimuovono, suddividono e riformattano il testo grezzo nei campi strutturati che si desidera archiviare.

## Navigare nel sito

La maggior parte dei dataset si estende su più pagine. Lo scraper deve attraversare l'[impaginazione](/docs/it/academy/handle-pagination), usando link alla pagina successiva, pulsanti "Carica altro" o scorrimento infinito, per raggiungere ogni record. Alcuni contenuti si trovano inoltre dietro [pagine protette da accesso](/docs/it/academy/scraping-login-walls), che lo scraper deve superare autenticandosi prima di poter eseguire le fasi precedenti.

## Eseguire su larga scala

Uno scraper che funziona una volta su un computer portatile deve comunque resistere a migliaia di esecuzioni. L'esecuzione [nel cloud](/docs/it/academy/cloud-web-scraping) mantiene attive le attività senza occupare il computer. I Proxy a rotazione distribuiscono le richieste tra numerosi indirizzi IP, evitando che un sito applichi limiti di frequenza o blocchi lo scraper. I CAPTCHA e i servizi anti-bot sono gli ostacoli che questa fase deve gestire.

## Archiviare l'output

Infine, i dati estratti vengono salvati in una destinazione utilizzabile: un file CSV o Excel, un'esportazione JSON, un database o un'API a valle. È questa fase a trasformare un'esecuzione di scraping in un dataset.

## Il ruolo di Octoparse

Con uno scraper scritto manualmente, devi collegare personalmente tutte queste fasi: una libreria per le richieste, un driver del browser, un motore per i selettori, codice di pulizia, logica di impaginazione, gestione dei Proxy e una fase di esportazione. Octoparse riunisce l'intera pipeline in un unico flusso di lavoro visuale. Basta indicare e fare clic per impostare i selettori; rendering, impaginazione, rotazione dei Proxy, Estrazione cloud ed esportazione sono integrati e si configurano senza scrivere codice. Le fasi restano le stesse; cambia il fatto che descrivi *che cosa* raccogliere, anziché progettare *come* eseguire ciascuna fase.
