Come scansionare un sito web: guida passo passo alla scansione con Python e JavaScript e i nostri 12 consigli per evitare di essere bloccati nel 2023

Intraprendere l’avventuroso viaggio della scansione del web può essere tanto emozionante quanto impegnativo, mentre ci si avventura nei labirintici vicoli di Internet alla ricerca di dati preziosi. Nel vasto universo digitale, l’arte della scansione del web è emersa come una competenza fondamentale, che ci consente di estrarre informazioni in modo efficiente, sviluppare intuizioni e comprendere il World Wide Web in continua espansione.

In questo articolo illuminante, attraverseremo l’intricato territorio della scansione del web, scoprendo le differenze tra la scansione del web e il web scraping ed esplorando una serie di strategie e tecnologie che porteranno le tue capacità di scansione del web a un livello superiore.

Dal dinamico mondo dei siti web JavaScript alla potente semplicità di Python, ti guideremo attraverso una moltitudine di suggerimenti e tecniche per garantire che la tua spedizione di scansione del web sia agevole, efficace e senza ostacoli.

Indice

Allaccia le cinture e preparati a intraprendere un viaggio entusiasmante nell’affascinante mondo della scansione del web!

Scansione del web vs. web scraping

Sebbene si pensi spesso che il web scraping e la scansione del web siano la stessa cosa, e che entrambi vengano utilizzati per il data mining, presentano differenze fondamentali. Esamineremo queste differenze e ti aiuteremo a determinare quale approccio si adatta meglio alle tue esigenze e ai tuoi obiettivi aziendali.

Differenze principali

In parole semplici, la scansione del web è ciò che fanno i motori di ricerca: navigano sul web, cercando tutte le informazioni disponibili e seguendo ogni link accessibile. Questo processo generale mira a raccogliere quante più informazioni possibile (o anche tutte) da un determinato sito web. In sostanza, è ciò che fa Google: esamina l’intera pagina web e indicizza tutti i dati disponibili.

Il web scraping, invece, viene utilizzato quando si desidera scaricare le informazioni raccolte. Il web scraping (noto anche come estrazione di dati web) è un processo più mirato. Personalizzando i comandi e utilizzando proxy per lo scraping, puoi estrarre dati specifici dal sito web di destinazione. In seguito, puoi scaricare i risultati in un formato adatto, come JSON o Excel.

In alcuni casi, è possibile ricorrere sia alla scansione del web sia al web scraping per raggiungere un unico obiettivo, utilizzandoli essenzialmente come primo e secondo passaggio del processo. Combinandoli, puoi raccogliere grandi quantità di informazioni da siti web importanti con un crawler e poi estrarre e scaricare i dati specifici di cui hai bisogno con uno scraper.

4 strategie di scansione del web

In generale, i crawler visitano solo una parte delle pagine web, in base al loro budget di scansione, che può essere determinato da fattori quali il numero massimo di pagine per dominio, la profondità o la durata.

Molti siti web offrono un file robots.txt che specifica quali parti del sito possono essere sottoposte a scansione e quali sono vietate. Inoltre, esiste sitemap.xml, che è più dettagliato di robots.txt, indica ai bot quali percorsi sottoporre a scansione e fornisce metadati aggiuntivi per ciascun URL.

Tra gli usi più comuni dei crawler web vi sono:

  1. I motori di ricerca come Googlebot, Bingbot e Yandex Bot raccolgono HTML da una parte considerevole del web e indicizzano i dati per renderli facilmente consultabili.
  2. Gli strumenti di analisi SEO raccolgono non solo HTML, ma anche metadati come il tempo di risposta e lo stato della risposta, per individuare le pagine non funzionanti e monitorare i link tra domini per l’analisi dei backlink.
  3. Gli strumenti di monitoraggio dei prezzi eseguono la scansione dei siti di e-commerce per individuare le pagine dei prodotti ed estrarne i metadati, in particolare i prezzi. Queste pagine dei prodotti vengono poi visitate periodicamente.
  4. Common Crawl mantiene un archivio pubblico di dati raccolti tramite scansione del web, come l’archivio di maggio 2022, che contiene 3,45 miliardi di pagine web.

Come eseguire il crawling di siti web JavaScript

Eseguire il crawling di siti web JavaScript può essere più impegnativo rispetto al crawling di pagine HTML statiche, perché spesso i contenuti vengono caricati e manipolati da codice JavaScript. Per eseguire il crawling di questi siti web, è necessario utilizzare un browser headless in grado di eseguire JavaScript e visualizzare i contenuti della pagina. Una scelta diffusa per questa attività è la combinazione della libreria Puppeteer e dell'ambiente di runtime Node.js.

Ecco una guida passo passo per eseguire il crawling di siti web JavaScript usando Puppeteer e Node.js:

1. Installa Node.js

Scarica e installa l'ultima versione di Node.js dal sito web ufficiale (https://nodejs.org/).

2. Crea una nuova directory per il progetto

Crea una nuova directory per il progetto e raggiungila usando la riga di comando.

mkdir js-crawler cd js-crawler

3. Inizializza un nuovo progetto Node.js

Esegui il seguente comando nella directory del progetto per creare un nuovo file package.json con le impostazioni predefinite.

npm init -y

4. Installa Puppeteer

Installa Puppeteer eseguendo il seguente comando nella directory del progetto

npm install puppeteer

5. Crea un nuovo file JavaScript

Crea un nuovo file chiamato

crawler.js

nella directory del progetto, che conterrà il codice per eseguire il crawling del sito web JavaScript.

6. Scrivi il codice del crawler

Apri

crawler.js

e aggiungi il seguente codice:

const puppeteer = require('puppeteer');async function crawlJavaScriptWebsite(url) {

Avvia una nuova istanza del browser

constbrowser =awaitpuppeteer.launch({headless:true});

Crea una nuova pagina nel browser

constpage =awaitbrowser.newPage();

Vai all'URL di destinazione

awaitpage.goto(url, {waitUntil:'networkidle2'})

Estrai i dati dalla pagina usando

evaluate()constdata =awaitpage.evaluate(() =>{

Scrivi qui il tuo codice JavaScript personalizzato per estrarre i dati che ti servono. Ad esempio, estraiamo tutte le intestazioni (elementi h1) dalla pagina.

constheadings =Array.from(document.querySelectorAll('h1')).map(heading=>heading.textContent);return{ headings, }; });

Chiudi il browser

awaitbrowser.close();

Restituisci i dati estratti

returndata; }

Esempio di utilizzo:

crawlJavaScriptWebsite('https://example.com/') .then(data=>console.log(data)) .catch(err=>console.error(err));

Sostituisci l'URL

https://example.com/

con l'URL del sito web di destinazione e personalizza la funzione

page.evaluate()

per estrarre i dati che ti servono.

7. Esegui il crawler

Esegui il seguente comando nella directory del progetto per avviare il crawler:

node crawler.js

Lo script avvierà un browser headless, raggiungerà l'URL di destinazione ed eseguirà il codice JavaScript specificato nella funzione

page.evaluate()

. I dati estratti verranno registrati nella console.

Tieni presente che questo è un esempio base di crawling di un sito web JavaScript. Per casi d'uso più avanzati, potrebbe essere necessario interagire con la pagina, gestire richieste AJAX, scorrere la pagina o affrontare CAPTCHA e cookie.

Come eseguire il crawling del Web con Python

Eseguire il crawling di un sito web con Python comporta il recupero delle pagine web, l'analisi dei loro contenuti e il seguire i link verso altre pagine. In questa guida useremo due popolari librerie Python: Requests e Beautiful Soup. Questa guida presuppone che Python sia installato e che tu abbia una conoscenza di base della programmazione in Python.

Passaggio 1: installare le librerie richieste

Installa le librerie Requests e Beautiful Soup usando pip:

pip install requests beautifulsoup4

Passaggio 2: importare le librerie

Importa le librerie richieste nel tuo script Python:

importrequestsfrombs4importBeautifulSoup

Passaggio 3: creare una funzione per recuperare il contenuto della pagina web

Crea una funzione per recuperare il contenuto della pagina web usando la libreria Requests:

deffetch_page(url):response = requests.get(url)ifresponse.status_code ==200:returnresponse.textelse:print(f"Failed to fetch{url}(status code{response.status_code})")returnNone

Passaggio 4: creare una funzione per analizzare il contenuto della pagina web

Crea una funzione per analizzare il contenuto della pagina web usando la libreria Beautiful Soup:

defparse_page(html): soup = BeautifulSoup(html,"html.parser")returnsoup

Crea una funzione per estrarre tutti i link dal contenuto della pagina web analizzato:

defextract_links(soup, base_url):links = []fora_taginsoup.find_all("a"):href = a_tag.get("href")ifhrefandnothref.startswith("#"):ifnothref.startswith("http"):href = base_url + hreflinks.append(href)returnlinks

Passaggio 6: creare una funzione per eseguire il crawling del sito web

Crea una funzione per eseguire il crawling ricorsivo del sito web:

defcrawl_website(url, max_depth=2, depth=0):ifdepth > max_depth:returnhtml = fetch_page(url)ifnothtml:returnsoup = parse_page(html)links = extract_links(soup, url)print(f"{' ' * depth}[{depth}]{url}")forlinkinlinks:crawl_website(link, max_depth, depth +1)

Passaggio 7: eseguire il crawler

Esegui il crawler chiamando la

crawl_website

funzione con l'URL desiderato e la profondità massima:

if__name__ =="__main__":start_url ="https://example.com/"max_depth =2crawl_website(start_url, max_depth)

Questa guida passo passo mostra come eseguire il crawling di un sito web usando Python. Puoi personalizzare la

crawl_website

funzione per gestire strutture specifiche di siti web, aggiungere una logica per archiviare le informazioni estratte o implementare funzionalità di crawling più avanzate, come la gestione di robots.txt, la limitazione della frequenza delle richieste o la loro esecuzione in parallelo.

12 consigli su come eseguire la scansione di un sito web senza essere bloccati

Queste sono le principali strategie per eseguire la scansione del web senza incorrere in blocchi:

#1: Verifica il protocollo di esclusione dei robot

Prima di eseguire la scansione o lo scraping di un sito web, assicurati che il sito di destinazione consenta la raccolta di dati dalle sue pagine. Esamina il file del protocollo di esclusione dei robot (robots.txt) del sito web e rispettane le regole.

Anche se il sito web consente la scansione, agisci con rispetto e non danneggiarlo. Rispetta le regole specificate nel protocollo di esclusione dei robot, esegui la scansione negli orari di minore affluenza, limita le richieste provenienti da un singolo indirizzo IP e stabilisci un intervallo tra le richieste.

Tuttavia, anche se il sito web consente lo scraping, potresti comunque incorrere in blocchi, quindi è essenziale seguire anche altri passaggi. Per una guida più completa, consulta il nostro tutorial sul web scraping con Python.

#2: Utilizza un server proxy

La scansione del web sarebbe quasi impossibile senza proxy. Scegli un provider di servizi proxy affidabile e seleziona proxy IP di datacenter o residenziali in base alla tua attività.

Usare un intermediario tra il tuo dispositivo e il sito web di destinazione riduce i blocchi degli indirizzi IP, garantisce l'anonimato e ti consente di accedere a siti web che potrebbero non essere disponibili nella tua regione. Ad esempio, se ti trovi in Germania, potresti dover utilizzare un proxy statunitense per accedere ai contenuti web negli Stati Uniti.

Per ottenere risultati ottimali, scegli un provider di proxy con un ampio pool di IP e un'ampia gamma di località.

#3: Ruota gli indirizzi IP

Quando utilizzi un pool di proxy, è fondamentale ruotare gli indirizzi IP.

Se invii troppe richieste dallo stesso indirizzo IP, il sito web di destinazione ti riconoscerà presto come una minaccia e bloccherà il tuo indirizzo IP. La rotazione dei proxy ti permette di apparire come diversi utenti Internet e riduce la probabilità di essere bloccati.

Tutti i Proxy residenziali Oxylabs ruotano gli IP, ma se utilizzi i Proxy Datacenter, dovresti servirti di un servizio di rotazione dei proxy. Ruotiamo anche i proxy IPv6 e IPv4. Se ti interessano le differenze tra IPv4 e IPv6, leggi l'articolo scritto dalla mia collega Iveta.

#4: Usa user agent reali

La maggior parte dei server che ospitano siti web può esaminare le intestazioni delle richieste HTTP generate dai bot di scansione. Questa intestazione della richiesta HTTP, chiamata user agent, contiene diverse informazioni che vanno dal sistema operativo e dal software al tipo di applicazione e alla relativa versione.

I server possono rilevare facilmente gli user agent sospetti. Gli user agent reali contengono configurazioni comuni delle richieste HTTP inviate dai visitatori organici. Per evitare di essere bloccato, assicurati di personalizzare il tuo user agent in modo che sembri organico.

Poiché ogni richiesta effettuata da un browser web contiene uno user agent, dovresti cambiarlo frequentemente.

È inoltre fondamentale utilizzare user agent aggiornati e molto diffusi. Se invii richieste con uno user agent vecchio di cinque anni, relativo a una versione di Firefox non più supportata, desterai molti sospetti. Puoi trovare su Internet database pubblici che mostrano quali sono attualmente gli user agent più diffusi. Disponiamo anche di un nostro database aggiornato regolarmente: contattaci se desideri accedervi.

#5: Configura correttamente la tua impronta digitale

I meccanismi anti-scraping stanno diventando sempre più sofisticati e alcuni siti web utilizzano il fingerprinting del Transmission Control Protocol (TCP) o dell'IP per rilevare i bot.

Durante lo scraping del web, il TCP lascia diversi parametri, determinati dal sistema operativo o dal dispositivo dell'utente finale. Se ti stai chiedendo come evitare di essere inserito in una lista nera durante lo scraping, assicurati che i tuoi parametri siano coerenti. In alternativa, puoi utilizzare Web Unblocker, una soluzione proxy basata sull'intelligenza artificiale con funzionalità di fingerprinting dinamico. Web Unblocker combina numerose variabili di fingerprinting in modo che, anche quando individua un'impronta digitale ottimale, le impronte sembrino comunque casuali e possano superare i controlli anti-bot.

#6: Fai attenzione alle trappole honeypot

Fai attenzione alle trappole honeypot, ovvero link nel codice HTML rilevabili dagli scraper web ma invisibili agli utenti organici. Queste trappole servono a identificare e bloccare i crawler web, poiché solo i robot seguirebbero tali link. Anche se configurare honeypot richiede molto lavoro, alcuni siti di destinazione potrebbero usarli per rilevare i crawler web: quindi, fai attenzione se la tua richiesta viene bloccata e viene rilevato un crawler.

#7: Utilizza servizi di risoluzione dei CAPTCHA

I CAPTCHA rappresentano un ostacolo importante per la scansione del web, poiché richiedono ai visitatori di risolvere enigmi per confermare di essere umani. Questi enigmi spesso includono immagini difficili da decifrare per i computer. Per aggirare i CAPTCHA, utilizza servizi dedicati alla loro risoluzione oppure strumenti di scansione pronti all'uso, come lo strumento di scansione dei dati di Oxylabs, che risolve i CAPTCHA e fornisce risultati pronti all'uso. Un comportamento sospetto potrebbe indurre il sito di destinazione a richiedere la risoluzione di un CAPTCHA.

#8: Modifica il modello di scansione

Per evitare di essere bloccato, modifica il modello di navigazione del tuo crawler per renderlo meno prevedibile. Puoi aggiungere clic, scorrimenti e movimenti del mouse casuali per imitare il comportamento di navigazione di un utente normale. Per seguire le best practice, pensa a come un utente tipico navigherebbe sul sito web e applica questi principi allo strumento. Ad esempio, visitare la home page prima di richiedere le pagine interne è un modello logico.

#9: Riduci la velocità dello scraper

Per ridurre il rischio di essere bloccato, rallenta lo scraper aggiungendo pause casuali tra le richieste o avviando comandi di attesa prima di eseguire un'azione. Se l'URL è soggetto a limitazioni di frequenza, rispetta i limiti del sito web e riduci la velocità dello scraping per evitare che le richieste vengano limitate.

#10: Esegui la scansione negli orari di minore affluenza

I crawler si muovono più velocemente degli utenti normali e possono incidere notevolmente sul carico del server. Eseguire la scansione nei momenti di massimo carico può influire negativamente sull'esperienza degli utenti a causa dei rallentamenti del servizio. Per evitarlo, esegui la scansione negli orari di minore affluenza, ad esempio subito dopo la mezzanotte (in base all'ora locale del servizio), così da ridurre il carico sul server.

#11: Evita lo scraping delle immagini

Lo scraping delle immagini può essere rischioso, poiché spesso si tratta di oggetti che occupano molti dati e potrebbero essere protetti da copyright. Inoltre, le immagini sono spesso nascoste in elementi JavaScript, il che può aumentare la complessità del processo di scraping e rallentare lo scraper web. Per estrarre immagini dagli elementi JS, è necessario ricorrere a una procedura di scraping più complessa.

#12: Usa un browser headless

Un browser headless è uno strumento che funziona come un browser normale, ma senza interfaccia grafica. Consente di eseguire lo scraping di contenuti caricati tramite il rendering di elementi JavaScript. I browser più utilizzati, Chrome e Firefox, dispongono di modalità headless che possono essere impiegate per lo scraping web senza innescare blocchi.

Video tutorial su come eseguire il crawling di un sito web

In questo tutorial di Oxylabs scoprirai le nozioni di base sul crawling web e la sua importanza per la raccolta dei dati, affrontando anche gli aspetti etici e legali. Il tutorial presenta strumenti popolari come Scrapy, Beautiful Soup e Selenium e ti aiuta a scegliere quello più adatto alle tue esigenze.

Il tutorial ti aiuta a comprendere la struttura di un sito web, creare un semplice crawler ed estrarre le informazioni che ti servono. Ti ricorda inoltre di seguire le buone pratiche di web scraping, ad esempio rispettando le regole di robots.txt e senza sovraccaricare i server.

Il video ti aiuta anche ad affrontare difficoltà come recuperare dati da pagine dinamiche, gestire più pagine ed evitare i blocchi. Mostra come salvare e organizzare i dati e offre consigli per ampliare e rendere più efficiente il tuo progetto di crawling web. Infine, ti ricorda di rispettare sempre le linee guida etiche e legali.

Conclusione

Giunti al termine della nostra entusiasmante esplorazione del mondo del crawling web, è chiaro che padroneggiare quest’arte equivale a possedere una mappa del tesoro nel vasto e mutevole panorama di Internet. Abbiamo approfondito le caratteristiche che distinguono il crawling web dal web scraping, scoperto diverse strategie ed esplorato i dinamici ambiti dei siti web JavaScript e del crawling web con Python.

La nostra raccolta di consigli e suggerimenti ti aiuterà a svolgere le tue attività di crawling web in modo responsabile ed etico, evitando le insidie e gli ostacoli che potrebbero presentarsi lungo il percorso. Perciò, mentre ti avventuri nell’immenso oceano digitale, forte delle conoscenze e della saggezza acquisite con questo articolo completo, ricorda che saper sfruttare la potenza del crawling web ti darà un vantaggio sulla concorrenza e ti permetterà di scoprire i tesori nascosti nelle profondità del mondo digitale.