Tutorial scraping

Andrea Borruso edited this page Apr 27, 2014 · 1 revision

Introduzione

Il sito dell’”Agenzia nazionale per l'amministrazione e la destinazione dei beni sequestrati e confiscati alla criminalità organizzata” (da qui in poi ANBSC) pubblica alcuni dati sui beni confiscati alle mafie.

Sono resi disponibili tramite tabelle HTML, in una struttura gerarchica geografica Regione > Provincia > Comune, che poi viene ulteriormente suddivisa per tipo di bene:

  • Immobili in gestione
  • Immobili destinati consegnati
  • Immobili destinati non consegnati
  • Immobili usciti dalla gestione
  • Immobili non confiscati in via autonoma
  • Aziende in gestione
  • Aziende uscite dalla gestione

Le tabelle in HTML non sono il formato ideale per la pubblicazione di dati da analizzare, aggregare, modificare, visualizzare, ecc., ma per fortuna (in molti casi) basta un “copia e incolla” per passare da una pagina web ad un foglio elettronico.

Sul sito dell’ANBSC la barriera più grossa non è tanto l’HTML, quanto il fatto che le informazioni sono distribuite su centinaia di pagine: quelle sui beni immobili sono pubblicate in circa 1600 pagine, e per archiviare il dato in modo organico dovremmo fare 1600 “copia e incolla”.

Per fortuna esiste il web scraping e i relativi strumenti e tecniche.

Web Scraping

Il web scraping (detto anche web harvesting o web data extraction) è una tecnica informatica di estrazione di dati da un sito web per mezzo di programmi software. Di solito, tali programmi simulano la navigazione umana nel World Wide Web attraverso l'implementazione di basso livello dell'Hypertext Transfer Protocol (HTTP) o l'incorporamento di un vero e proprio browser[...].

Tornando a quanto scritto sopra, si tratta quindi di tecniche e strumenti che, in modo automatico o semi-automatico, sfogliano per noi le pagine web di nostro interesse e ne estraggono soltanto quelle informazioni che riteniamo utili.

Non esiste uno strumento o una tecnica di scraping buoni per ogni sito, e non è nemmeno detto che ne esista una adeguata e che faccia sempre risparmiare tempo.

Laddove i contenuti di partenza siano strutturati in modo leggibile da una macchina, il processo di estrazione automatica dei dati sarà sicuramente semplificato. Un altro elemento che contribuisce alla buona riuscita di uno scraping è la presenza di URL con una sintassi utile a sfogliare la mappa di un sito tramite query.

Ad esempio http://www.nomesito.it/index.html?tipo=pizzerie&vietatofumare=no potrebbe essere l’URL per estrarre da un sito tutte gli elementi di tipo pizzeria dove non è vietato fumare. Una struttura di questo tipo ha un’altra grande utilità: consente di individuare gli URL delle sole pagine da cui vogliamo estarre informazioni, e non spendere tempo in processi automatici su sezioni del sito inutili per la nostra indagine.

Lo scraping del sito dell’ANBSC

Il sito dell’ANBSC si presta abbastanza bene ad un processo di scraping. In termini di codice, per le pagine relative ai beni,  è caratterizzato da tabelle HTML ben strutturate in cui le celle di intestazione sono ad esempio separate dalle altre.

Anche in termini di URL è possibile individuare una struttura che consente di ottimizzare il processo di estrazione dei dati. Il seguente è un URL tipo:

http://www.benisequestraticonfiscati.it/Joomla/index.php?option=com\_content&view=article&button1=Cerca&id=512&Itemid=27&regione=19&provincia=92&comune=7412&tipo=0&stato=1

Tutte le pagine con i dati sui beni hanno questo schema di URL, tramite il quale è possibile fare dei filtri per, regione, provincia, comune e stato (Immobili in gestione, Immobili destinati consegnati, Immobili destinati non consegnati, Immobili usciti dalla gestione, Immobili non confiscati in via autonoma, Aziende in gestione, Aziende uscite dalla gestione).

Per estrarre le informazioni sui beni dal sito dell’ANBSC due i passi principali:

  1. individuare l’elenco degli URL della pagine di cui fare lo scraping
  2. estrarre le informazioni sui beni da ognuna

Lo strumento utilizzato per entrambi è stato import.io, un’applicazione di data collection per Linux, OSX e Windows, che ha tra le sue caratteristiche quella di estrarre dati da un insieme di pagine definite e caratterizzate da un certo pattern (struttura). Realizza tutto questo tramite un classico processo di crawling, in cui vengono  identificati tutti gli hyperlink presenti nel sito; se il sito ha uno schema di URL definito (come quello dell’ANBSC) sarà possibile filtrare soltanto quelli utili.

Le pagine che contengono tutti gli URL delle pagine di cui fare lo scraping sono quelle delle province. Un esempio quello di Trapani, dove in corrispondenza di ogni Comune e per “stato” del bene è presente l’URL della pagina da cui estrarre le informazioni (nell’immagine di sotto sono evidenziati gli hyperlink dei beni del Comune di Castelvetrano).

Ma prima bisognerà appunto estrarre l’elenco degli URL delle pagine delle province. La cosa si può fare in import.io così come si vede in questo video.

A questo punto bisognerà estrarre tutti l’elenco degli di tutti gli URL presenti nelle pagine delle province e si farà in modo del simile a quanto fatto per l’estrazione dei dati dalle pagine delle regioni. Gli URL raccolti in questa fase saranno quelli delle pagine da qui estrarre tutti i dati sui beni.

Il risultato finale sarà una tabella che dovrà essere normalizzata, ma che costituisce nella sua essenza il dataset di riferimento.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.