Wie fordere und verarbeite ich JSON mit Python?

91

Ich versuche, eine GET-Anfrage an eine URL zu senden, von der ich weiß, dass sie mithilfe von Python Daten in Form von JSON zurückgibt.

Ich würde gerne wissen, wie ich diese Anfrage an senden http://someurl/path/to/jsonund wie ich sie analysieren kann - vorzugsweise an ein Python-Diktat.

sa125
quelle
2
Darf ich Sie bitten, Ihre akzeptierte Antwort durch die mit Anfragen zu ersetzen?
Webjunkie
Klar, so würde ich es heute machen :)
sa125

Antworten:

130

Für alles, was Anfragen an URLs enthält, möchten Sie möglicherweise Anfragen auschecken . Insbesondere für JSON:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
Webjunkie
quelle
1
Das Ausführen mit $ python GetJson.py gibt keine Antwort, aber das Gleiche, wenn eines nach dem anderen auf Python CLI ausgeführt wird, funktioniert einwandfrei. Jeder Fehler, den ich beim Einfügen in ein .py? (ma noob in Python) gemacht habe
betet am
1
Das Problem, das ich damit habe, ist, dass DjangoRestFramework-Serialisierer dies aufgrund des Präfixes 'u' vor den Schlüsseln nicht als gültigen json akzeptieren.
Wobbily_col
2
@PrayagUpd alte, und Sie haben es wahrscheinlich herausgefunden, aber für alle anderen, die sich darüber wundern: In einer .pyDatei muss print(r.json())die Antwort sehen.
Antti Haapala
73

Pythons Standardbibliothek hat jsonund urllib2Module.

import json
import urllib2

data = json.load(urllib2.urlopen('http://someurl/path/to/json'))
SilentGhost
quelle
21
Dies ist eine alte Frage, aber ich wollte Webjunkie beitreten und darauf hinweisen, dass 2012 die Bibliothek Requests: HTTP for Humans eine potenziell bevorzugte Antwort ist. docs.python-requests.org/en/latest
Peter Hanley
6
Sie sollten auf jeden Fall Anfragen verwenden.
Hughdbrown
1
Aber dies ist immer noch nützlich, wenn Sie in einer gutmütigen Organisation stecken, die es schwierig macht, Bibliotheken zu laden, die nicht Teil der Standardbibliothek sind
Thruston