Parti dalla richiesta, non dall’interfaccia
Prima di scrivere la logica, apri DevTools e osserva che cosa cambia passando al gruppo successivo.- Apri la scheda Network e filtra Fetch/XHR.
- Fai clic sulla pagina successiva, scorri o premi “Carica altro”.
- Esamina URL, parametri della query, corpo della richiesta e risposta.
- Decidi se seguire link, interagire con la pagina o chiamare direttamente un endpoint API.
offset=40; un link potrebbe caricare i risultati con JavaScript dopo la modifica dell’URL.
Pagine numerate
È il caso più semplice, perché la posizione successiva è visibile nell’URL:0, parametri come p o start e siti che restituiscono nuovamente la prima pagina quando il numero è fuori intervallo. La ripetizione della prima pagina è peggiore di una pagina vuota, perché crea duplicati senza errori evidenti.
Link alla pagina successiva
Alcuni siti mostrano soltanto un link “Successiva” o una freccia. Se è una normale ancora, seguilo:seen_urls è importante: alcuni siti configurati male fanno puntare l’ultimo link alla pagina corrente o alla prima. Verifica anche stati disabilitati come aria-disabled="true", disabled o una classe disabled.
Scorrimento infinito
Sembra un problema risolvibile solo nel browser, ma di solito utilizza un’API. Scorri una volta con DevTools aperto e cerca la richiesta che recupera il gruppo successivo; i parametri sono spessooffset, page, after, cursor o limit.
Quando l’endpoint è utilizzabile, chiamalo direttamente:
Pulsanti Carica altro
Un pulsante Carica altro è uno scorrimento infinito controllato: la pagina attende un clic prima di richiedere il gruppo successivo. Lo scraper può quindi attendere, convalidare il nuovo numero di elementi e riprovare in caso di errore. Se il pulsante chiama un’API chiara, usa l’API; altrimenti fai clic in un ciclo browser:API con offset e cursore
I siti moderni gestiscono spesso l’impaginazione a livello API. L’offset richiede una posizione numerica:Retry-After, riprova gli errori temporanei con backoff e salva l’avanzamento se ricominciare dalla prima pagina sarebbe costoso.
Impaginazione ibrida
I siti reali combinano spesso più schemi:- Una categoria ha pagine numerate, ma ogni pagina carica altri prodotti durante lo scorrimento.
- Una ricerca inizia con Carica altro e poi passa ai link numerati.
- Un’interfaccia a schede ha impaginazioni separate per “Nuovi”, “Popolari” e “In offerta”.
- Una pagina di elenco impagina gli URL dei risultati e ogni dettaglio ha recensioni o commenti a loro volta impaginati.
Misure di sicurezza pratiche
- Definisci un segnale di arresto. Risultati vuoti, link successivi assenti, pulsanti disabilitati,
hasNextPage: false, cursori ripetuti e limiti massimi di iterazione sono tutti validi. - Rileva i duplicati. Scorrimento infinito e API con cursore possono ripetere record se i dati cambiano durante l’esecuzione. Conserva ID stabili o URL canonici.
- Regola la navigazione. Aggiungi brevi attese casuali tra i gruppi. L’automazione deve attendere modifiche dei contenuti, non soltanto timeout fissi.
- Registra gli errori. Se una pagina non riesce dopo più tentativi, registra URL o cursore e continua quando possibile.
- Preferisci le API quando sono legittime e stabili. L’impaginazione API diretta è solitamente più veloce e facile da convalidare del controllo di un browser.
- Usa uno strumento visuale quando la velocità conta più del codice personalizzato. In Octoparse, i comuni flussi con pagina successiva, Carica altro e scorrimento infinito si configurano visivamente e si eseguono in locale o nel cloud.