lezione per gli studenti di data science di unitn del corso di datajournalism per spiegare come sono strutturate le pagine web e come estrarre i contenuti per elaborarli poi in python pandas
1. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Estrarre contenuti
dal web
Maurizio Napolitano
<napo@fbk.eu>
2. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Obiettivo del corso:
Cosa c'è in una pagina web
API, json, xml e … scraping di HTML
Requirements:
python pandas
3. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napohttp://www.viaggiareintrentino.it/it
10. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
python -m SimpleHTTPServer
python -m http.server
Python 2
Python 3
http://localhost:8080
http://127.0.0.1:8080
12. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Vedere tutte le chiamate delle pagina
13. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Individuare la chiamata al JSON dell'elenco delle telecamere
Nota:
appare al clic su “Telecamere” nella pagina vi viaggiare in Trentino
14. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
JSON + JavaScript Object Notation
Simile ai dictionary
https://docs.python.org/3/tutorial/datastructures.html#dictionaries
15. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napohttp://bit.ly/jsontelecamereviaggiareintrentino
da JSON a Pandas Dataframe
16. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napohttps://servizi.apss.tn.it/opendata/STATOPS001.xml
XML
https://dati.trentino.it/dataset/visualizzazione-presenze-nei-pronto-soccorso
18. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
=IMPORTXML("https://servizi.apss.tn.it/opendata/STATOPS001.xml";"//STATOPS/PRONTO_SOCCORSO/PS")
19. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napocode here
http://bit.ly/xmlprontosoccorsopandas
more about BeautlfulSoup here
https://www.crummy.com/software/BeautifulSoup/
21. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
http://www.statistica.provincia.tn.it/dati_online/
http://www.statweb.provincia.tn.it/annuario/(S(nk3o1055atv5vj55t2j3rdb2))/Default.aspx?t=at
http://www.statweb.provincia.tn.it/annuario/(S(nk3o1055atv5vj55t2j3rdb2))/tavola.aspx?idt=2.15&t=at
22. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Come è generata questa stringa?
(S(nk3o1055atv5vj55t2j3rdb2))
http://www.statweb.provincia.tn.it/annuario/(S(nk3o1055atv5vj55t2j3rdb2))/Default.aspx?t=at
Nota:
appare diversa ogni volta che si visita il sito delle tavole ISPAT
23. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
F12
La chiamata a dati_online di ISPAT genera dei cookies
Rivediamo tutti i passaggi che fa il browser
24. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Questa pagina fa due chiamate!
25. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Prima chiamata
La chiamata alla pagina principale di
www.statweb.provincia.it/annuario genera
contiene nell'header di risposta l'identificativo
generato "al volo" per la chiamata successiva
26. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Seconda chiamata
Default.aspx
genera dei cookies
27. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Le tavole dei dati
Le tavole dei dati sono pagina HTML che si
raggiungono alla pagina tavola.aspx dove
è passato come parametro l'identificativo della
tavola (es. 2.12)
si generano solo se esiste il valore di location
generato nella pagina precedente
28. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Individuare l'HTML che contiene i dati
29. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
code here
http://bit.ly/scraper_ispat
costruire lo scraper python che genera il pandas Dataframe
30. Estrarre contenuti dal web
corso di laurea in data science - datajournalism
@napo
Maurizio Napolitano
http://slideshare.net/napo
napolitano@fbk.eu
@napo
GRAZIE!!!