Web scraping: cos’è e come fare?

Foto di European Parliament, Flickr

Il web scraping è una tecnica utile a prelevare dati dal web, quando i dati non sono già disponibili in formato tabellare

Foto di European Parliament, Flickr
Foto di European Parliament, Flickr

Lo scraping, dall’inglese “grattare”, consiste proprio nell’andare a reperire dati pubblicato in Rete che ci serve avere rappresentati in tabelle al fine, da esempio, di rielaborarli. Durante l’ultimo festival del giornalismo di Perugia Linda Sandvik ne ha parlato in un workshop finalizzato a spiegare come attuare nel modo più semplice (e senza avere conoscenze tecniche specifiche) questa tecnica. Come fare allora?

Copia e incolla. Il modo più semplice è ovviamente quello di copiare i dati dalla pagina web per incollarli sul foglio di calcolo dopo avere verificato che la licenza con cui i dati sono pubblicati lo consenta (ovviamente, va sempre citata la fonte dalla quale si copia). Questo è però possibile solo se le informazioni sono già rappresentate in tabella.

Estrarre dati da pdf. Nel caso in cui si trovino pubblicato dei file in formato .pdf, è possibile riprendere i dati attraverso  un software open source come Tabula, che una volta installato richiede semplicemente l’upload del file .pdf che dopo la rielaborazione mostra una tabella da poter riesportare in formato .csv o .ods. Altro strumento molto semplice e gratuito è l’app ScraperWiki, piattaforma di strumenti di scraping condiviso.

Estrarre dati da pagine web. Nel caso in cui le informazioni che ci interessano siano pubblicate in pagine web, è possibile utilizzare alcuni strumenti da hoc che possono aiutarci a selezionare l’area dalla quale prelevare informazioni per riportarle in forma tabella. Uno di questi è una estensione per il browser Chrome e si chiama Scraper. Dopo averla installata è sufficiente selezionare i dati da estrarre, cliccare sul tasto desto e poi su Scrape similar: apparirà una finestra con i dati già organizzati in tabella e con la possibilità di agire sull’html per “aggiustare” la nuova tabella.  Altro potente strumento è import. io che non ha bisogno di installazioni, visto che offre la possibilità di indicare direttamente nel sito l’indirizzo della pagina da “scrapare”. La cosa interessante di questo strumento è l’integrazione con plot.ly, servizio che consente la rappresentazione grafica dinamica dei dati.

Il passo successivo (e meno immediato) è quello di costruire un web scraper, ovvero un applicativo che consente di estrarre automaticamente dati dalle pagine web. Ma questo richiede una conoscenza di linguaggi di programmazione. Ci fermiamo qui e aspettiamo che qualcuna di voi ci racconti la sua esperienza di scraping!

Di Sonia Montegiove

Dopo un colpo di fulmine per un IBM PS 1 ha coltivato ininterrottamente la sua passione per l’informatica. Analista programmatrice e docente per lavoro è avida lettrice e giornalista pubblicista per pura passione.

11 commenti

  1. Ci sono diversi tipi di webscraping. Io sto facendo esperienza con lo scraping in tempo reale che mi permette di confrontare i dati di più siti in modo continuativo. Per fare questo, prima ho analizzato diversi servizi automatici e semiautomatici, ma per ciò che volevo ottenere, ho dovuto scartare qualsiasi strada che facesse riferimento a servizi preconfezionati. A questo punto mi sono messo alla ricerca di tool e/o linguaggi di programmazione che risultassero utili allo scopo. Per primo mi sono imbattuto in Phantom Js (https://phantomjs.org/) e (https://www.selenium.dev/), questi sono due tool open source. Questi possono essere pilotati tramite node js (ma in un primo momento li ho usati col PHP tramite delle librerie aggiuntive). Da qui ho capito che per un uso più professionale del webscraping il linguaggio di programmazione ideale fosse nodejs (https://nodejs.org/it/) perchè permette di far girare le procedure anche in parallelo e non solo in modo sequenziale come i linguaggi classici (PHP, C, …). Se le procedure vengono eseguite esclusivamente in sequenza cioè una dopo l’altra i tempi si allungano enormemente e non va bene su sistemi che devono dare risposte in tempo reale. Successivamente ho scoperto un altro prodotto open source che si chiama puppeteer (https://github.com/puppeteer/puppeteer) da pilotare con nodejs. Gli sviluppatori di Puppeteer poi sono passati a creare un altro prodotto che mantenesse la API simili a quelle di Puppeter ma correggesse alcuni inconvenienti; il 30 gennaio 2020 la microsoft ha annunciato l’uscita di questo nuovo prodotto (https://www.infoq.com/news/2020/01/playwright-browser-automation/) che si chiama Playwright (https://github.com/microsoft/playwright). Tutto questo discorso per dire che la mia scelta finale è Nodejs + Playwright che sono ambedue open source. Saluti Sonia, ci conosciamo su Facebook.

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.