Dalle fonti statistiche alle API

Estrarre dati dal web

Carlo Romagnoli | @karlettin81

Alessio Cimarelli | @jenkin27

Network europeo di data giornalisti

  • Inchieste
  • Altri progetti
    • Sport data journalism (blogf1)
    • Associazione onData (sito)
    • Datamediahub (blog)

Alessio, Andrea, Andrea, Carlo, Donata, Elena, Gianluca, Mara, Nicola, ...

Evolutionary Road

Dalla "Preistoria"...

...alla "Età Moderna"

  • Documenti cartacei
  • Scarsa Accessibilità
  • Burocrazia
  • Digitalizzazione diffusa
  • Interazione Utente/Fonte
  • Opendata

UNIVERSO DI

FONTI / DATI

STATISTICI

WORK IN

PROGRESS

METODO

+

=

DataDriven Attitude

Tenere traccia dei percorsi intrapresi

In caso di dubbi .... Chiedere sempre !

Aggiornarsi costantemente (fonti / modalità di fruizione)

Assicurarsi che le informazioni statistiche siano aggiornate

Verificare tutte le informazioni statistiche utilizzate

Valutare le possibilità di matching tra fonti statistiche/indicatori

 

Overview fonti ufficiali: Italia​ 

Immigrazione www.stra-dati.istat.it

Amministrazioni Pubbliche - www.dati.statistiche-pa.it

Disabilità in cifre - www.dati.disabilitaincifre.it

Demografia - www.demo.istat.it

Benessere Equo Sostenibile - www.misuredelbenessere.it

Commercio Estero www.coeweb.istat.it

I.Istat  - Noi Italia - Censimenti 

Overview fonti ufficiali: Italia​

GENERALISTE

SPECIALISTICHE

Ministero Economia e Finanze - www.mef.gov.it

Banca d'Italia www.bancaditialia.it

Dati Aperti PA - www.dati.gov.it

Inps - www.inps.it

Agricoltura - Ismea - www.ismea.it

Politiche del Lavoro - Isfol - www.isfol.it

Spettacolo e Intrattenimento - Siae - www.siae.it

Immobiliare - Agenzia Entrate - agenziaentrate.gov.it

 

 

GEO-REFERENZIATE

Overview fonti ufficiali: Estero​ 

International Monetary Fund - www.imf.org

World Bank - www.worldbank.com

Food and Agricolture Organization - www.fao.org

International Labour Organizationwww.ilo.org

United Nations - www.un.org

Eurostat - www.ec.europa.eu/eurostat

Banca Centrale Europea - www.ecb.europa.eu

Commissione Europea www.ec.europa.eu

Consiglio d'Europa - www.coe.int

UE Opendata Portal - www.open-data.europa.eu

Application

Programming

Interface

Una buona API fornisce una "scatola nera", cioè un livello di astrazione che evita al programmatore di sapere come funzionano le API ad un livello più basso (wikipedia).

Application

Programming

Interface

Una buona API fornisce una "scatola nera", cioè un livello di astrazione che evita al programmatore di sapere come funzionano le API ad un livello più basso (wikipedia).

Architettura

Client

Server

Un'architettura di rete nella quale genericamente un computer client o terminale si connette a un server per la fruizione di un certo servizio (wikipedia).

Request

Response

Pattern

Request–response is a message exchange pattern in which a requestor sends a request message to a replier system which receives and processes the request, ultimately returning a message in response (wikipedia).

Hypertext

Transfer

Protocol

HTTP functions as a request–response protocol in the client–server computing model (wikipedia).

Request line

Header fields

Request body

Status code and message

Response header fields

Response body

Uniform

Resource

Identifier

Uniform Resource Identifier (URI) is a string of characters used to identify a resource (wikipedia).

[protocol]://[user]:[password]@[host]:[port]/[path]?[key]=[value]#[hash]

http://www.festivaldelgiornalismo.com/post/tag/ijf16/

GET

Query

String

In informatica una query-string o stringa di ricerca è la parte di un URL che contiene dei dati da passare in input ad un programma (wikipedia).

[protocol]://[user]:[password]@[host]:[port]/[path]?[key]=[value]#[hash]

http://twitter.com/share?

url=http://www.festivaldelgiornalismo.com/programme/2016/statistical-sources-instructions-for-use&

text=Dalle%20fonti%20statistiche%20alle%20API:%20estrarre%20dati%20dal%20web%20%23ijf16&

via=journalismfest

POST

Request

Method

The POST request method requests that a web server accepts and stores the data enclosed in the body of the request message (wikipedia).


{
    "url": "http://www.festivaldelgiornalismo.com/programme/2016/statistical-sources-instructions-for-use",
    "text": "Dalle fonti statistiche alle API: estrarre dati dal web #ijf16",
    "via": "journalismfest"
}

[protocol]://[user]:[password]@[host]:[port]/[path]?[key]=[value]#[hash]

JavaScript

Object

Notation

JSON è un formato adatto all'interscambio di dati fra applicazioni client-server (wikipedia).


{
    "stringa": "abcde",
    "numero intero": 3,
    "numero decimale": 3.14,
    "valore booleano": true,
    "valore nullo": null,
    "array semplice": [1,2,3,4,5],
    "array associativo": {
        "cosa": "ijf16",
        "dove": "Perugia"
    }
}

"abcde" -> stringa di testo

3 -> numero intero

3.14 -> numero decimale

true -> valore booleano

null -> valore nullo

[] -> array semplice

{} -> array associativo

CSV

versus

JSON

Il comma-separated values è un formato di file basato su file di testo utilizzato per l'importazione ed esportazione di una tabella di dati (wikipedia).

id nome cognome mail twitter
1 carlo romagnoli karlettin@dataninja.it @karlettin81
2 alessio cimarelli jenkin@dataninja.it @jenkin27

 

id,nome,cognome,mail,twitter

1,carlo,romagnoli,karlettin@dataninja.it,@karlettin81

2,alessio,cimarelli,jenkin@dataninja.it,@jenkin27

CSV

versus

JSON

id nome cognome mail twitter
1 carlo romagnoli karlettin@dataninja.it @karlettin81
2 alessio cimarelli jenkin@dataninja.it @jenkin27

id,nome,cognome,mail,twitter

1,carlo,romagnoli,karlettin@dataninja.it,@karlettin81

2,alessio,cimarelli,jenkin@dataninja.it,@jenkin27



[
  {
    "id": 1,
    "nome": "carlo",
    "cognome": "romagnoli",
    "mail": "karlettin@dataninja.it",
    "twitter": "@karlettin81"
  },
  {
    "id": 2,
    "nome": "alessio",
    "cognome": "cimarelli",
    "mail": "jenkin@dataninja.it",
    "twitter": "@jenkin27"
  }
]


{
  "id": [1,2],
  "nome": ["carlo","alessio"],
  "cognome": ["romagnoli","cimarelli"],
  "mail": ["karlettin@dataninja.it","jenkin@dataninja.it"],
  "twitter": ["@karlettin81","@jenkin27"]
}


{
  "keys": ["id","nome","cognome","mail","twitter"],
  "values": [
    [1,"carlo","romagnoli","karlettin@dataninja.it","@karlettin81"],
    [2,"alessio","cimarelli","jenkin@dataninja.it","@jenkin27"],
  ]
}

Twitter API Console

Facebook Graph API

Twitter Streaming API


from twython import TwythonStreamer
from stream_auth import MyStreamAuth

class MyStreamer(TwythonStreamer):

    def on_success(self, status):
        if 'text' in status:
            print \
                status['created_at'], "|", \
                status['text'].encode('utf-8'), "|", \
                "@"+status['user']['screen_name'], "|", \
                "https://twitter.com/"+status['user']['screen_name']+"/status/"+status['id_str']

    def on_error(self, error_code, data):
        print "Error", error_code, ", exit..."
        self.disconnect()

auth = MyStreamAuth()
stream = MyStreamer(
    auth.app_key(),
    auth.app_secret(),
    auth.access_token(),
    auth.access_secret()
)

print "Twitter real-time stream, filtering #ijf16..."
stream.statuses.filter(track='#ijf16')

Kawabonga!

onData

www.ondata.it

Alessio Cimarelli

jenkin@dataninja.it

@jenkin27

Icon made by Freepik from www.flaticon.com

Made with Slides.com