--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Gruppo Telegram: https://t.me/opendatasicilia
---
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 opendatasicil...@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendat...@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/ae95563b-d4d4-4c4c-9234-76e30f46771f%40googlegroups.com.
Per altre opzioni visita https://groups.google.com/d/optout.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/opendatasicilia/CAJyZuPJN-Cj7xnWn_UgfTUKk7akKuN16m%2BwXThWCAGV0uvgVpw%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.
Ciao,qualche nota sui dati.
La fonte di partenza è questo sito http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa
Che è dal punto di vista del front-end abbandonato, ma che è in connessione ancora con il db in cui confluiscono via app le segnalazioni dei cittadini.
Se si prova a fare query come quella di sotto, e si visualizza con gli strumenti di sviluppo del browser, si vede come vengono richiesti i dati.
Se si fa tasto destro su 3) mappa e si scegli Copy > Copy as cURL (bash)
avrete questo codice
curl 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' \
-H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.54 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it,en-US;q=0.9,en;q=0.8' -H 'Cookie: ci_session=bda02ce3618af0531686befe21379b687321ca0b' \
--data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A' --compressed
cURL è un browser a riga di comando, che chiede sopra i dati dal giorno 10 ottobre 2018 al giorno 16, per le attività aperte (hanno codice 31), per tutte le circoscrizioni del comune di Palermo.
Per questo sito la query si esprime così --data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A
.
La query copia sopra si può ridurre soltanto a:
curl 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' \
--data 'giorno_dal=10%2F10%2F2018&giorno_al=16%2F10%2F2018&attivita_id=31&circoscrizione_id=T&stato=A'
Nell’output, una pagina HTML (qui un esempio un po’ ripulito), ci sono le info sulla posizione dei pallini e le info anagrafiche.
Le info sulla posizione hanno questa struttura var myLatlng = new google.maps.LatLng(38.113918,13.377532);
.
Le info con data, ora e via invece sono in questo tipo di blocco:
marker_2.set("content", "<h4>15/10/2018 20:20:18<\/h4><p>VIA PASOLINI PIER PAOLO, 25<\/p><p><img style=\"height:400px\" src=\"http://www.rapspaservizi.it/develop1/images/segnalazioni/segnalazione_31627.jpg\" alt=\"Foto non disponibile\"><\/p>");
C’era quindi da creare uno script che scaricasse la pagina HTML e che estraesse queste informazioni e le strutturasse in un file più usabile.
A seguire quello che genera i dati usati da Totò e Gianni. Sfrutta csvkit, cURL, paste (un’utility che unisce in orizzontale più file di testo) e sopratutto le utility di base di Linux per pulire, estrarre e trasformare stringhe di testo (sed, grep, perl, echo, ecc.).
Buona giornata
#!/bin/bash
### requisiti ###
# csvkit
### requisiti ###
set -x
cartella="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# leggo la data di oggi
oggi=$(echo $(date +'%d %m %Y') | sed 's/ /%2F/g')
# Prima scarico i dati
# le segnalazioni aperte
curl -sL 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' \
-H 'Cache-Control: max-age=0' -H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.40 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7' \
--data 'giorno_dal=01%2F01%2F2018&giorno_al='"$oggi"'&attivita_id=31&circoscrizione_id=T&stato=A' >"$cartella"/aperte
# poi le segnalazioni chiuse
curl -sL 'http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Connection: keep-alive' \
-H 'Cache-Control: max-age=0' -H 'Origin: http://www.rapspaservizi.it' -H 'Upgrade-Insecure-Requests: 1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.40 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'Referer: http://www.rapspaservizi.it/develop1/bastaundito/bastaundito_dev/mappa' -H 'Accept-Encoding: gzip, deflate' \
-H 'Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7' \
--data 'giorno_dal=01%2F01%2F2018&giorno_al='"$oggi"'&attivita_id=31&circoscrizione_id=T&stato=C' >"$cartella"/chiuse
# estraggo info anagrafiche su ogni "pallino" (le info sulle coordinate sono in un blocco diverso da quello anagrafico)
## creo riga di intestazione del file di output delle segnalazioni
echo "data,indirizzo,foto,stato" >"$cartella"/dati.csv
## estraggo info su segnalazioni aperte
<"$cartella"/aperte grep -P 'marker_[0-9]+.set.*' | \
perl -pe 's|(marker_)([0-9]+)(.*?)(<h[0-9]>)(.*?)(<.h[0-9]>)(<p>)(.*?)(<.p>)(.*?)(src=.")(.*?)(.")(.*)$|$5#$8#$12|g' | \
grep -v 'marker' | csvformat -d "#" | sed -e 's/$/,aperta/g' | sed -r 's/^\s+//' >>"$cartella"/dati.csv
## estraggo info su segnalazioni aperte chiuse
<"$cartella"/chiuse grep -P 'marker_[0-9]+.set.*' | \
perl -pe 's|(marker_)([0-9]+)(.*?)(<h[0-9]>)(.*?)(<.h[0-9]>)(<p>)(.*?)(<.p>)(.*?)(src=.")(.*?)(.")(.*)$|$5#$8#$12|g' | \
grep -v 'marker' | csvformat -d "#" | sed -e 's/$/,chiusa/g' | sed -r 's/^\s+//' >>"$cartella"/dati.csv
## estraggo info sulle coordinate
echo "latitude,longitude" >"$cartella"/coords.txt
<"$cartella"/aperte grep -P 'google.maps.LatLng' | tail -n +3 | sed -r 's/^\s+//g' | perl -pe 's/^(.+?\()(.+?)(.;)/$2/g' >>"$cartella"/coords.txt
<"$cartella"/chiuse grep -P 'google.maps.LatLng' | tail -n +3 | sed -r 's/^\s+//g' | perl -pe 's/^(.+?\()(.+?)(.;)/$2/g' >>"$cartella"/coords.txt
# metto insieme le info anagrafiche con quelle spaziali
paste -d , dati.csv "$cartella"/coords.txt >"$cartella"/output.csv
# rimuovo i record che hanno 0 come coordinate e creo geojson
<"$cartella"/output.csv csvgrep -c "latitude,longitude" -r '^.{0,1}0.{0,1}$' -i | csvjson --lat latitude --lon longitude >"$cartella"/output.geojson
mv "$cartella"/output.csv "$cartella"/segnalazioniAppRAP.csv
--
Sito: http://opendatasicilia.it
Facebook: https://www.facebook.com/groups/opendatasicilia/
twitter: http://twitter.com/opendatasicilia
Gruppo Telegram: https://t.me/opendatasicilia
---
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 opendatasicil...@googlegroups.com.
Per postare in questo gruppo, invia un'email a opendat...@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/CAHEdGZO0xzRhw2Ep%3Dauv%3Dp6f7eu0P0in7aXrOScHSfFt5i84Cw%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.