Salvare una tabella HTML in CSV, a partire da una pagina web

Un amico mi contatta e mi chiede: come posso scaricare la tabella presente in questa pagina web (Coste Italiane – WikiPedia)??

WikiPedia – Coste Italiane

Gli dico di contattare il mago ‘WikiAndy’ ma oggi è impegnato in un evento: Lo ‘Schiticchio‘ estivo organizzato da OpenDataSicilia. Allora mi rimbocco le maniche e inizio a studiare come poter scaricare la tabella, ricordo che esistono vari modi ma alla fine scelgo di usare scrape cli e quindi scrivo la seguente ricetta:

curl "https://it.wikipedia.org/wiki/Coste_italiane" | scrape -be 'table.wikitable'| vd -f html
  • curl: per scaricare una pagina Web;
  • scrape: estrae elementi HTML usando le query del selettore XPath o CSS;
  • vd: comando per avviare VisiData

dopo avvio della ricetta otterrò:

Shell Bash su Win10

un successivo invio sulla schermata precedente e vedrò:

VisiData

la seconda e terza colonna sono viste come testo e quindi non utilizzabili per successive analisi, quindi occorre togliere il (.) punto e la (,) trasformarla in (.): con VisiData è un attimo

  • digitare: gz*
  • alla richiesta ‘transform column by regex:’ digitare \./ che significa: trova tutti i (.) e sostituiscili con nulla (/);
  • per trasformare la (,) in (.) digitiamo nuovamente: gz* e poi ,/. che significa: trova tutte le , e sostituiscile con il .;
  • per rinominare le colonne, navigare sulla colonna e digitare Shift+^;
  • per salvare il file, digitare Ctrl+s;
  • per definire il tipo di colonna: # tipo intero (seconda colonna); % tipo real (terza colonna)

Risultato finale:

file csv

Ma non è finita, è presente un errore nella terza colonna in corrispondenza della Sicilia, dove è utilizzato due volte il (.) sia come separatore delle migliaia che per i decimali (25.832.39); per modificare solo questo valore occorre navigare sul numero e digitare e e poi modificare.

risultato finale

NOTE FINALI: Come potete notare la riga di comando permette di fare cose belle, veloci e utili.

Riferimenti:

Ringraziamenti:

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.