Abbiamo già visto come estrarre dati da un sito web ma spesso può capitare che i dati che vogliamo ottenere sono solo una parte della stringa che otteniamo e che, quindi, devono essere elaborati prima di essere salvati. In questi casi bisogna ricorrere al JavaScript e in particolare alla funzione EVAL di IMacros (disponibile per iMacros for Firefox 7.4.0.1 e successivi) che permette di utilizzare tutta la potenza dell’omonima funzione in JavaScript.

Vediamo l’esempio:

SET !EXTRACT_TEST_POPUP NO
TAB T=1
TAG POS={{!LOOP}} TYPE=TD ATTR=CLASS:v
TAG POS=R1 TYPE=B ATTR=CLASS:black EXTRACT=TXT
SET !VAR1  EVAL("var s=\"{{!EXTRACT}}\"; s=s.concat(\"[EXTRACT]\");")
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=TITLE:* EXTRACT=TXT
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s=s.substring(1,s.length-1); s=\"{{!VAR1}}\"+s;")
SET !EXTRACT NULL
TAG POS={{!LOOP}} TYPE=TD ATTR=CLASS:v
TAG POS=R1 TYPE=A ATTR=TITLE:*
TAB T=2
TAG POS=1 TYPE=H3 ATTR=CLASS:clearfix
TAG POS=R1 TYPE=UL ATTR=* EXTRACT=TXT
SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.replace(\'\"\',\' \') ;s=s.slice(s.indexOf(\"Class\")+1);  s=s.slice(s.indexOf(\"(\")+1); if(s.indexOf(\"(\")!=-1){s=s.slice(s.indexOf(\"(\")+1); s=s.substring(0,s.indexOf(\")\"));} else{s=\"-\";} ")
SET !EXTRACT NULL
TAG POS=1 TYPE=DIV ATTR=CLASS:raceInfo EXTRACT=TXT
SET !VAR3 EVAL("var s=\"{{!EXTRACT}}\"; s=s.substring(s.indexOf(\"TIME\")+5,s.indexOf(\"(\"));")
SET !EXTRACT NULL
TAB CLOSE
SET !EXTRACT {{!VAR1}}[EXTRACT]{{!VAR2}}[EXTRACT]{{!VAR3}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=Racing_Post-{{!NOW:dd-mm-yyyy}}.txt

Notiamo l’utilizzo di alcune variabili locali di IMacros (!VAR1,!VAR2,!VAR3) per salvare i dati estratti. Attualmente sono le sole disponibili ma nelle versioni successive dovrebbero essere disponibili da !VAR0 a !VAR9.  Notiamo anche l’utilizzo della variabile !LOOP che rappresenta il numero intero relativo al ciclo attualmente in corso, che ci permetterà di indicare il numero di righe da estrarre da una tabella, e della variabile !NOW che ci permetterà di salvare il file in modo univoco. Come già detto la funzione EVAL ci permette di utilizzare il JavaScript per modificare una stringa ottenuta con EXTRACT e di salvarla in una delle variabili locali.
Infine viene settata la variabile di estrazione !EXTRACT come la concatenazione delle stringhe ottenute divise dai caratteri “[EXTRACT]”. L’istruzione successiva sostituirà quest’ultima stringa con una virgola e salverà il file in formato csv facilmente importabile in fogli di lavoro come Excel o Google Spreadsheet o in database.
A questo punto i dati vengono analizzati. Nell’esempio si ottengono dei dati sulle corse dei cavalli. I dati ottenuti permetteranno all’utente di creare un algoritmo attraverso il quale viene scelta la scommessa con più probabilità di vittoria. E se vincete passate di qua! 😉
Ecco il video che mostra la Macro all’opera:
Be Sociable, Share!