Ich habe den folgenden Code in einem meiner Skripte erhalten:
#
# url is defined above.
#
jsonurl = urlopen(url)
#
# While trying to debug, I put this in:
#
print jsonurl
#
# Was hoping text would contain the actual json crap from the URL, but seems not...
#
text = json.loads(jsonurl)
print text
Ich möchte das, {{.....etc.....}}
was ich auf der URL sehe, abrufen, wenn ich es in Firefox in mein Skript lade, damit ich einen Wert daraus analysieren kann. Ich habe eine Menge gegoogelt, aber ich habe keine gute Antwort gefunden, wie man das {{...}}
Zeug tatsächlich von einer URL erhält, die .json
in einem Python-Skript in einem Objekt endet .
json.loads
was eine Zeichenfolge verbraucht (weshalb dies.read()
erforderlich ist, verwenden Siejson.load(response)
stattdessen.urllib2
in Python2 vorzuziehen?Ich gehe davon aus, dass Sie tatsächlich Daten von der URL erhalten möchten:
Oder überprüfen Sie den JSON-Decoder in der Anforderungsbibliothek .
quelle
Dadurch wird ein Wörterbuch im JSON-Format von einer Webseite mit Python 2.X und Python 3.X abgerufen:
Siehe auch: Lese- und Schreibbeispiel für JSON
quelle
Ich habe festgestellt, dass dies der einfachste und effizienteste Weg ist, um JSON von einer Webseite zu erhalten, wenn Python 3 verwendet wird:
quelle
from urllib.request import urlopen
Alles, was der Aufruf von
urlopen()
(gemäß den Dokumenten ) bewirkt, ist die Rückgabe eines dateiähnlichen Objekts. Sobald Sie das haben, müssen Sie seineread()
Methode aufrufen , um die JSON-Daten tatsächlich über das Netzwerk zu ziehen.Etwas wie:
quelle
In Python 2 funktioniert json.load () anstelle von json.loads ()
Leider funktioniert das in Python 3 nicht. Json.load ist nur ein Wrapper um json.loads, der read () für ein dateiähnliches Objekt aufruft. json.loads erfordert ein String-Objekt und die Ausgabe von urllib.urlopen (url) .read () ist ein Byte-Objekt. Man muss also die Dateicodierung erhalten, damit sie in Python 3 funktioniert.
In diesem Beispiel fragen wir die Header nach der Codierung ab und greifen auf utf-8 zurück, wenn wir keine erhalten. Das Header-Objekt unterscheidet sich zwischen Python 2 und 3, daher muss es auf unterschiedliche Weise ausgeführt werden. Die Verwendung von Anforderungen würde all dies vermeiden, aber manchmal müssen Sie sich an die Standardbibliothek halten.
quelle
Es ist nicht erforderlich, eine zusätzliche Bibliothek zu verwenden, um den JSON zu analysieren ...
json.loads()
gibt ein Wörterbuch zurück .Also in Ihrem Fall einfach tun
text["someValueKey"]
quelle
Späte Antwort, aber für
python>=3.6
Sie können verwenden:Installieren
dload
mit:quelle
Sie können verwenden
json.dumps
:Zum Laden von json und zum Schreiben in eine Datei ist der folgende Code hilfreich:
quelle