wake-up-neo.com

Python urllib2: JSON-Antwort von URL empfangen

Ich versuche, eine URL mit Python zu erhalten, und die Antwort ist JSON. Allerdings wenn ich renne

import urllib2
response = urllib2.urlopen('https://api.instagram.com/v1/tags/pizza/media/XXXXXX')
html=response.read()
print html

Das HTML ist vom Typ str und ich erwarte eine JSON. Gibt es eine Möglichkeit, die Antwort als JSON oder als Python-Wörterbuch anstelle eines Strings zu erfassen.

83
Deepak B

Wenn die URL gültige JSON-codierte Daten zurückgibt, verwenden Sie die Bibliothek json , um diese zu decodieren:

import urllib2
import json

response = urllib2.urlopen('https://api.instagram.com/v1/tags/pizza/media/XXXXXX')
data = json.load(response)   
print data
174
Martijn Pieters
import json
import urllib

url = 'http://example.com/file.json'
r = urllib.request.urlopen(url)
data = json.loads(r.read().decode(r.info().get_param('charset') or 'utf-8'))
print(data)

urllib , für Python 3.4
HTTPMessage , zurückgegeben von r.info ()

35
SanalBathery

Seien Sie vorsichtig bei der Validierung usw., aber die direkte Lösung lautet:

import json
the_dict = json.load(response)
4
MostafaR
"""
Return JSON to webpage
Adding to wonderful answer by @Sanal
For Django 3.4
Adding a working url that returns a json (Source: http://www.jsontest.com/#echo)
"""

import json
import urllib

url = 'http://echo.jsontest.com/insert-key-here/insert-value-here/key/value'
respons = urllib.request.urlopen(url)
data = json.loads(respons.read().decode(respons.info().get_param('charset') or 'utf-8'))
return HttpResponse(json.dumps(data), content_type="application/json")
3
raccoon
resource_url = 'http://localhost:8080/service/'
response = json.loads(urllib2.urlopen(resource_url).read())
2
Jossef Harush

Python 3-Standardbibliothek einzeilig:

load(urlopen(url))

# imports (place these above the code before running it)
from json import load
from urllib.request import urlopen
url = 'https://jsonplaceholder.typicode.com/todos/1'
1
Adam

Obwohl ich denke, dass es bereits geantwortet hat, möchte ich hier etwas hinzufügen

import json
import urllib2
class Website(object):
    def __init__(self,name):
        self.name = name 
    def dump(self):
     self.data= urllib2.urlopen(self.name)
     return self.data

    def convJSON(self):
         data=  json.load(self.dump())
     print data

domain = Website("https://example.com")
domain.convJSON()

Hinweis: Das Objekt, das an json.load () übergeben wird, sollte .read () unterstützen, daher urllib2.urlopen (self.name) .read () würde nicht funktionieren bestanden sollte in diesem Fall mit Protokoll versehen werden http  

0
Nitigya Sharma

sie können JSON auch erhalten, indem Sie requests wie folgt verwenden:

import requests

r = requests.get('http://yoursite.com/your-json-pfile.json')
json_response = r.json()
0
Haritsinh Gohil

Dies ist eine weitere einfachere Lösung für Ihre Frage

pd.read_json(data)

dabei sind Daten die Zeichenfolge, die aus dem folgenden Code ausgegeben wird

response = urlopen("https://data.nasa.gov/resource/y77d-th95.json")
json_data = response.read().decode('utf-8', 'replace')
0