Un piccolo esempio di scraping a riga di comando

9 views
Skip to first unread message

andy

unread,
Aug 12, 2017, 2:25:50 PM8/12/17
to opendatasicilia

Ciao,
nell’incontro di Palermo sull’utilizzo della riga di comando per “manipolare” i dati ho fatto dei piccoli esempi a scopo didattico.

Ne aggiungo che è un pezzo di un post che ho scritto, in cui mostravo come estrarre date e dati da una pagina del “Piano Triennale per l’informatica nella Pubblica Amministrazione”.

La pagina è quelle delle azioni. Il primo obiettivo è stato per me quello di trasformare una pagina HTML in un file strutturato (ho scelto un CSV, ma poteva essere mille altre cose.

A riga di comando si può fare così (faccio uso di curl, scrape, xmlstarlet e csvkit):

# scarico la pagina con curl
curl -sL "https://pianotriennale-ict.italia.it/azioni/"  | \
# passo il codice della pagina a scrape e gli dico di estrarre tutto ciò che è contenuto dentro l'elemento con id=panel-0
scrape -be "//*[@id=\"panel-0\"]" | \
# passo l'output di scrape a xmlstarlet con cui estraggo Tempi, Attori, Descrizione e Risultati, via XPATH.
# L'output di xmlstarlet è un CSV separato da "|"
xmlstarlet sel --html -t -m "//*/div/div[2]/span" -v "." -o "|" -v "normalize-space(../../../../h3)" -o "|" \
-v "normalize-space(../../div[4])" -o "|" -v "normalize-space(../../div[6]/div)" -o "|" -v "normalize-space(../../div[8])" -o "|centrali" -n | \
# passo l'output a csvformat per creare un file CSV e gli dico che come separatore ho usato il carattere "|"
csvformat -d "|" > fileoutput.csv

# aggiungo la riga di intestazione al CSV

sed -i '1s/^/Tempi,Azione,Attori,Descrizione,Risultati,Amministrazioni\n/' fileoutput.csv

L’output è questo.

Nel post su medium ho usato una sintassi bash un po’ più complessa. Qui ho condiviso la parte più importante.

Saluti,

a

--
___________________

Andrea Borruso
website: https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E, EPSG:4326
___________________

"cercare e saper riconoscere chi e cosa,
 in mezzo all’inferno, non è inferno, 
e farlo durare, e dargli spazio"

Italo Calvino

ciro spataro

unread,
Aug 12, 2017, 4:35:34 PM8/12/17
to opendatasicilia
Grazie Andrea.
Per i comuni ignoranti e poco smanettoni come me..... È possibile disporre (come output del tuo lavoro prezioso) di un feed RSS in maniera da agganciarci un canale telegram che aggiorna automaticamente sulle azioni del piano triennale ict della PA ?
Grazie 

--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Slack: http://opendatasicilia.it/slack/
Newsletter http://opendatasicilia.it/newsletter/
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "opendatasicilia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a opendatasicilia+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendatasicilia@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/opendatasicilia.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/opendatasicilia/CAHEdGZMVMEWZLDGQMuJDpj37KCw2A3cD7reOk3fBuyh-NMQckQ%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.

andy

unread,
Aug 13, 2017, 4:30:31 AM8/13/17
to opendatasicilia
Ciao Ciro,

2017-08-12 22:35 GMT+02:00 ciro spataro <ciro...@gmail.com>:
Grazie Andrea.
Per i comuni ignoranti e poco smanettoni come me..... È possibile disporre (come output del tuo lavoro prezioso) di un feed RSS in maniera da agganciarci un canale telegram che aggiorna automaticamente sulle azioni del piano triennale ict della PA ?
Grazie

non appena il post ha iniziato a girare Gianluca Varisco del team digitale ha fatto intendere che creerà il feed, e immagino verrà fatto nelle prossime settimane.

Inline images 1

In ogni caso, io lo creerò per uso personale. E poi lo girerò anche qui.

Saluti

ciro spataro

unread,
Aug 13, 2017, 4:46:05 AM8/13/17
to opendatasicilia
Grazie 
Non avevo seguito quel thread 



--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Slack: http://opendatasicilia.it/slack/
Newsletter http://opendatasicilia.it/newsletter/
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "opendatasicilia" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a opendatasicilia+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendatasicilia@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/opendatasicilia.

Giovan Battista Vitrano

unread,
Aug 17, 2017, 2:47:42 PM8/17/17
to opendatasicilia
devo smettere di fare mappe!
Devo dedicarmi alla riga di comando, recuperare dati in questo modo mi fa impazzire :-) :-)
Reply all
Reply to author
Forward
0 new messages