Javascript, HTML, CSS e... !
0 commenti

Recuperare informazioni tramite data scraping

Parsing HTML di una pagina web con Google Apps Script

 In Google Apps Script è possibile, con veramente pochissime righe di codice, recuperare il contenuto desiderato presente all'interno di una pagina web definendone i tag che lo contengono.

Passando subito all'esempio pratico, il primo passggio è quello di aprire la pagina web desiderata, posizionarsi con il cursore del mouse sull'elemento HTML contenente l'informazione di interesse e dal menu contestuale che si aprirà cliccando con il taso destro selezionare 'Ispeziona'. In questo modo è possibile identificare i tag HTML presenti prima e dopo il dato che si intende recuperare. Copiarli e annotarli in modo da poterli inserire nella funzione che andremo ad utilizzare.
Nel caso dell'esempio in questione ho utilizzato come pagina di destinazione un articolo sul mio blog (link all'articolo) e come informazione da recuperare mi sono concentrato sul numero dei commenti presenti per tale articolo. Di seguito uno screenshot della pagina e del codice HTML oggetto di attenzione, Fig. 1:



pagina target con evidenziato il valore da recuperare ed il relativo codice HTML

Fig. 01 - Pagina target con evidenziato il valore da recuperare ed il relativo codice HTML


La funzione che ho creato allo scopo è la seguente:

function getData() {
  var url = "http://www.michelepisani.it/articoli/cookie-policy-come-gestire-analytics-adsense-e-i-bottoni-social/";
  var string_find_start = '<a href="#comments" class="icon-link"><span class="icon-text">&#59160;</span>';
  var string_find_end = 'commenti</a>';
  var content = UrlFetchApp.fetch(url);
  
  var content = content.getBlob().getDataAsString('ISO-8859-1');
  var string_find_start_length = string_find_start.length;
  var string_find_start_position = content.indexOf(string_find_start);
  var string_find_start_position_content = string_find_start_position + string_find_start_length;
  var string_find_end_position = content.indexOf(string_find_end, string_find_start_position);
  var result = content.substring(string_find_start_position_content, string_find_end_position);
  
  Logger.log(result);
}

Quello di cui ha bisogno è che le venga fornito l'url di destinazione e le porzioni HTML identificative,rispettivamente di inzio e di fine, che racchiudono il contenuto che ci interessa estrapolare.

I passaggi che svolge la funzione prevedono l'uso di UrlFetchApp.fetch(url) per accedere alla risorsa web tramite il suo url dopodiché il contenuto recuperato viene processato dalla seguente riga di codice per convertirlo in UTF-8 evitando la generazione di eventuali caratteri non riconosciuti in fase di visualizzazione:

var content = content.getBlob().getDataAsString('ISO-8859-1');

Le righe di codice successive recuperano il numero della posizione dei caratteri in pagina corrispondenti rispettivamente a quello di inizio del contenuto da recuperare (ovvero l'ultimo carattere della stringa identificativa di inizio) ed a quello di fine (ovvero il primo carattere della stringa identificativa di terminazione).
Conoscendo queste due posizioni viene estratta la parte di stringa al loro interno.

Eseguendo lo script, all'interno della finestra di log, View -> Logs (in quanto è stato indicato con Logger.log() la destinazione del valore di nostro interesse, ma avrei potuto inserirlo in una variabile così come all'interno di uno Spreadsheet), possiamo notare che è stato recuperato il numero dei commenti visualizzato per l'articolo in questione che, nel caso specifico, è 38 (Fig. 2):



risultato del parsing html visualizzato nella finestra di log

Fig. 02 - Risultato del parsing HTML visualizzato nella finestra di log


Per chi volesse ottenere lo stesso risultato in modo più agevolato può fare riferimento al tutorial "Parsing HTML con una Libreria pronta in Google Apps Script" dove mostro come poterlo fare tramite l'utilizzo di una libreria pronta all'uso reperita sul web.
A tal proposito faccio presente che in alcuni casi è sconsigliato l'uso delle librerie nei progetti Apps Script come descritto nell'articolo "Google Apps Script: best practice per il miglioramento delle performance".

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]http://www.appsscript.it[/url] se devi riferirti ad un indirizzo web