Sviluppo software

Web Scraping, Crawler, Bot: cosa sono e come si implementano?

Al giorno d'oggi vanno molto di moda i servizi che recuperano dati da diversi siti web, li normalizzano in un formato unico utile al confronto e li presentano all'utente/cliente per la scelta dell'opzione più vantaggiosa.

Servizi come questi confrontano di tutto: dai viaggi e voli aerei (eDreams , Expedia , Kayak ), alle polizze assicurative (facile.it , segugio.it ), ai conti correnti, alle offerte di luce e gas, agli hotels (trivago ), ecc.

Tutti questi servizi o buona parte di essi, utilizza la tecnica del web scraping: dei software detti bot o crawler, scaricano e analizzano i dati presenti sulle pagine dei siti che offrono i servizi oggetto del confronto come spiegato bene su wikipedia (Web Scraping ).

Noi di Garda Informatica abbiano realizzato per conto di nostri clienti bot per il web scraping di siti web.

Come abbiamo fatto?


Secondo noi, l'approccio migliore per la realizzazione di tali programmi consiste nell'utilizzo di un browser programmabile, detto in gergo headless browser (letteralmente browser senza testa). Il vantaggio di questa tecnica è che per il sito web non c'è differenza tra un utente umano e un bot.

Cos'è un browser?

Un browser è un programma che consente la navigazione sul web come: Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari, ecc.

Cosa significa headless?

Significa che è in grado di navigare come un comune browser, ma, non avendo un'interfaccia grafica, non mostrerà nulla all'utente dei dati elaborati.

E a cosa può essere utile?

Può essere utile in tutti quei casi in cui si vuole programmare un browser a comportarsi come se fosse un normale utente che sta navigando su internet: aprire pagine, reperire informazioni, seguire link, scaricare allegati, riempire form, cliccare su bottoni, effettuare login e logout, ecc.

Oltre al già citato impgiego nel settore del web scraping, un headless browser può essere utilizzato per automatizzare dei test di navigazione durante lo sviluppo di un sito web.

Attualmente i principali headless browser disponibili sono i seguenti:

  • PhantomJs : headless browser basato su WebKit (il motore di Chrome, Safari e Opera) e programmabile in JavaScript;

  • SlimerJs : browser programmabile in Javascript basato su Geko (il motore di Firefox) non nativamente headless;

  • Zombie.js : non è un vero e proprio browser privato del rendering, ma si basa sull'emulazione. Anche questo è programmabile in Javascript;

  • SeleniumHQ : non è headless, ma serve per lo stesso scopo.

Noi di Garda Informatica, abbiamo scelto PhantomJs per i seguenti motivi:

  • È l'unico vero headless browser, è l'unico cioè che può essere eseguito in un contesto dove non sia presente un window manager (es. via riga di comando su di un server Linux);
  • È multipiattaforma: è disponibile per Windows, Linux e Mac OS X;
  • È autocontenuto: l'eseguibile fornito dallo sviluppatore è un unico file senza dipendenze esterne e contenente già tutto il necessario per fare il suo dovere e quindi estremamente facile da installare (basta un copia e incolla);

In definitiva, con questa tecnologia, è possibile creare un software automatizzato che raccolta informazione dai siti web come se si trattasse di un instancabile utente umano. Questa possibilità apre innumerevoli scenari, ma va utilizzata nel rispetto delle norme e delle policy dei vari siti web.

Come sempre la tecnologia di per sè non è né buona né cattiva, tutto dipende dall'uso che se ne fa.

Hai bisogno di una soluzione di web scraping dei dati? oppure hai qualche domanda a cui non abbiamo dato risposta? Contattaci senza impegno!

Votazione pagina#

[Voti: 48 Media voto: 4.1/5]
Autore: Giovanni Chiodi
Senior software developer con più di 10 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Lorenzo.

Promemoria sui Cookie e sulla Privacy

Leggi l'informativa
closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menulinkIcona link