Caratteristiche e Differenza tra Web Crawling e Web Scraping

Caratteristiche e Differenza tra Web Crawling e Web Scraping

Recupero di informazioni dal web

Internet è ad oggi la più vasta collezione di informazioni e dati esistente: il suo utilizzo ha subito negli ultimi anni una crescita esponenziale portando questa tecnologia, e l’immensa mole di dati che essa offre, alla portata di tutte le famiglie.

Le informazioni disponibili nel web sono eterogenee: ogni sviluppatore decide come rappresentarle nel proprio sito e non viene utilizzato nessuno standard di rappresentazione dei dati. Per questo, la collezione di dati in grosse quantità è complicata da automatizzare. Il pratico copia-incolla non è un opzione quando i dati da prelevare sono dell’ordine delle centinaia, se non migliaia o addirittura milioni: se ad esempio si dovessero salvare manualmente su un foglio di calcolo delle informazioni, il processo consisterebbe nel copiare e incollare ogni singolo dato dalla sua pagina web al documento da creare, richiedendo tempo che sarebbe preferibile risparmiare utilizzando un programma che svolga tutte le operazioni. Fortunatamente, sebbene i dati inseriti nelle pagine web non siano strutturati perfettamente, è possibile utilizzare dei programmi, chiamati scraper, che in base al formato e alla struttura della pagina possono adattarsi ed effettuare lo scraping (letteralmente raschiatura o scrostatura) per ottenere i dati. Gli scraper sono spesso utilizzati insieme ai crawler: programmi che visitano tutte le pagine raggiungibili a partire da un indirizzo fornito come input, seguendone i collegamenti.

Caratteristiche e Differenza tra Web Crawling e Web Scraping

Web Crawling

Il web crawling è il processo di analisi di siti web utilizzato per indicizzarne tutti i contenuti. Un crawler, anche conosciuto come spider, è un software specializzato per prelevare tutto il contenuto di una pagina web e seguirne i vari link per analizzare siti web collegati o pagine secondarie. Molti crawler forniscono impostazioni per controllare e limitare l’esecuzione, le più importanti sono:

  1. Controllo della profondità: Si può impostare un parametro per comunicare al crawler quanti collegamenti seguire dalla pagina di partenza, generalmente seguire 5 link di profondità è più che sufficiente per analizzare tutto un sito web.
  2. Pagine da seguire simultaneamente: Qualche web crawler può eseguire richieste in parallelo a pagine web e permette di impostare un limite al numero massimo.
  3. Pausa tra le richieste: Per non intasare il sito web o rischiare di essere
    bloccati, è possibile impostare una pausa da rispettare prima di seguire un nuovo collegamento.
  4. Salvataggio dei log: Siccome l’esecuzione di un crawler richiede del tempo e può interrompersi, è consigliato impostare un file che tiene traccia di tutte le operazioni effettuate e degli errori riscontrati, oltre all’elenco di pagine già ottenute prima dell’interruzione.

Il caso d’uso più comune dei crawler è l’utilizzo da parte dei motori di ricerca: le pagine trovate dal crawler vengono indicizzate per fornire risultati attinenti alla query di ricerca dell’utente che utilizza il servizio.
Un programma che effettua crawling di un sito web generalmente parte da una lista di URL ed esegue una richiesta http/https per ogni URL ottenendo come risposta il contenuto della pagina dalla quale andrà a ricavare e ad aggiungere alla lista tutti i nuovi collegamenti trovati.

I crawler generalmente vengono eseguiti sistematicamente sulle stesse pagine per aggiornare le informazioni e vengono avviati passando come lista il risultato del crawling precedente. Siccome i crawler seguono ogni collegamento trovato su una pagina web e possono restituire il contenuto ad uno scraper, è possibile che vengano salvate e rese disponibili dai motori di ricerca delle informazioni che dovrebbero restare private o perlomeno che non dovrebbero essere indicizzate. Per proteggersi i webmaster possono creare un file robots.txt nella cartella root del sito web dove specificare le regole che i crawler dovrebbero seguire, ad esempio la seguente regola:

User−agent : ∗
Disallow : / admin/

che comunica ai crawler di non andare ad analizzare la directory admin.

Oltre a delle regole di esclusione/inclusione è possibile fornire anche delle mappe del sito (sitemap) generalmente in formato XML che elencano gerarchicamente tutte le pagine web. Queste mappe sono ampiamente utilizzate non solo per la navigazione dell’utente ma anche per facilitare l’operazio ne di crawling. Il rispetto o meno delle regole contenute nel file robots.txt dipende da come è stato implementato il crawler: si potrebbe decidere di seguire le volontà del webmaster del sito e quindi ignorare certi percorsi oppure di analizzare qualsiasi collegamento trovato. Per “boicottare” crawler che ignorano il file robots.txt i webmaster possono ricorrere a delle trappole, chiamate crawler traps, che sono inserite nel file robots.txt come da escludere: se un crawler ignora il file robots.txt incappa nella trappola. Queste trappole possono essere volute ma anche non volute, nel caso in cui le pagine sono generate dinamicamente. Un esempio si può avere con un calendario che contiene link per il giorno successivo e precedente: il crawler troverebbe continuamente nuovi collegamenti da seguire, rimanendo difatti “intrappolato” nel calendario. Le trappole più conosciute e utilizzate sono:

  1. Creazione di sotto directory indefinitamente profonde con struttura simile a: foo.com/bar/foo/bar/foo/bar/foo/bar/…
  2. Pagine dinamiche che producono un numero indefinito di collegamenti da seguire, come ad esempio i calendari.
  3. Documenti con un gran numero di caratteri, capaci di bloccare il processo di crawling della pagina, se il crawler non è ottimizzato.

I crawler più avanzati sono in grado di riconoscere qualcuna di queste trappole ma è difficile evitarle tutte se non viene rispettato il file robots.txt.
Uno dei più famosi web crawler è Googlebot che, come è facilmente intuibile dal nome, è utilizzato da Google per il suo motore di ricerca. Il crawler di Google è identificabile in quanto le richieste contengono “Googlebot” all’interno del campo user-agent e l’indirizzo host contiene “googlebot.com”. Google fornisce inoltre degli strumenti ai webmaster per impostare, tra le altre cose, la frequenza di crawling e per generare e validare i file robots.txt e le sitemap.
I difetti del web crawling risiedono nel fatto che inviare richieste ad ogni pagina del sito web può saturare la banda del sito o appesantire il server stesso rallentando le normali richieste di utenti che visitano il sito.

Web Scraping

Il web scraping, chiamato anche in diversi modi tra cui web data extraction, è una tecnica che consiste nel prelevare dati da siti web. Anche se l’estrazione di dati da un sito web può essere eseguita manualmente dall’utente, si parla di web scraping sopratutto quando il processo di estrazione è automatizzato grazie all’uso di un software che emula la visita di un utente ad un sito web e quando i dati ottenuti sono inseriti in un database o in dei fogli di stile, o più generalmente salvati localmente, per poi essere analizzati nel complesso. Il contenuto della pagina web viene quindi analizzato per ottenere informazioni.

Esempi di utilizzo di web scraping sono il confronto dei prezzi dello stesso prodotto trovato su diversi siti web, l’analisi dei dati di diversi utenti di un sito web a fine di creare un elenco organizzato o, più generalmente, il monitoraggio di dati da siti web.
Per raccogliere grandi quantità di dati, e non solo uno specifico dato, il web scraper è spesso usato come estensione di un web crawler: i moderni web scraper possono analizzare interi siti web seguendo i collegamenti per recuperare i vari contenuti, per poi analizzarli individualmente estrapolando i dati necessari.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *