J'ai le code suivant dans l'un de mes scripts:
#
# 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
Ce que je veux faire, c'est obtenir les {{.....etc.....}}
éléments que je vois sur l'URL lorsque je la charge dans Firefox dans mon script afin que je puisse en analyser une valeur. J'ai cherché une tonne sur Google, mais je n'ai pas trouvé de bonne réponse sur la façon d'obtenir réellement le {{...}}
contenu d'une URL se terminant .json
par un objet dans un script Python.
json.loads
qui consomme une chaîne, utilisez (c'est pourquoi il.read()
est obligatoire, utilisezjson.load(response)
plutôt.urllib2
préférable en Python2?Je suppose que vous souhaitez réellement obtenir des données à partir de l'URL:
Ou, consultez le décodeur JSON dans la bibliothèque de requêtes .
la source
Cela obtient un dictionnaire au format JSON à partir d'une page Web avec Python 2.X et Python 3.X:
Voir aussi: Exemple de lecture et d'écriture pour JSON
la source
J'ai trouvé que c'était le moyen le plus simple et le plus efficace d'obtenir JSON à partir d'une page Web lors de l'utilisation de Python 3:
la source
from urllib.request import urlopen
Tout ce que l'appel à
urlopen()
fait (selon la documentation ) est de retourner un objet semblable à un fichier. Une fois que vous avez cela, vous devez appeler sonread()
méthode pour extraire les données JSON sur le réseau.Quelque chose comme:
la source
Dans Python 2, json.load () fonctionnera à la place de json.loads ()
Malheureusement, cela ne fonctionne pas dans Python 3. json.load est juste un wrapper autour de json.loads qui appelle read () pour un objet de type fichier. json.loads nécessite un objet string et la sortie de urllib.urlopen (url) .read () est un objet bytes. Il faut donc obtenir le codage du fichier pour le faire fonctionner en Python 3.
Dans cet exemple, nous interrogeons les en-têtes pour l'encodage et revenons à utf-8 si nous n'en obtenons pas. L'objet headers est différent entre Python 2 et 3, il doit donc être fait de différentes manières. L'utilisation de requêtes éviterait tout cela, mais vous devez parfois vous en tenir à la bibliothèque standard.
la source
Il n'est pas nécessaire d'utiliser une bibliothèque supplémentaire pour analyser le json ...
json.loads()
renvoie un dictionnaire .Alors dans ton cas, fais juste
text["someValueKey"]
la source
Réponse tardive, mais pour
python>=3.6
vous pouvez utiliser:Installer
dload
avec:la source
vous avez besoin
import requests
et utilisez la méthode json ():Bien sûr, cette méthode fonctionne également:
la source
vous pouvez utiliser
json.dumps
:pour charger json et l'écrire dans un fichier, le code suivant est utile:
la source