[python] Python urllib2 : URL에서 JSON 응답 수신

Python을 사용하여 URL을 얻으려고하는데 응답은 JSON입니다. 그러나 내가 달리면

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

html은 str 유형이며 JSON이 필요합니다. 응답을 str 대신 JSON 또는 python 사전으로 캡처 할 수있는 방법이 있습니까?



답변

URL이 유효한 JSON 인코딩 데이터를 반환하는 경우 json라이브러리 를 사용하여 디코딩합니다.

import urllib2
import json

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


답변

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 , Python 3.4 용
HTTPMessage , r.info ()에서 반환


답변

"""
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")


답변

유효성 검사 등에 대해주의를 기울이십시오. 그러나 직접적인 해결책은 다음과 같습니다.

import json
the_dict = json.load(response)


답변

resource_url = 'http://localhost:8080/service/'
response = json.loads(urllib2.urlopen(resource_url).read())


답변

Python 3 표준 라이브러리 한 줄 :

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'


답변

이미 대답 한 것 같지만 여기에 조금 더하고 싶습니다

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()

참고 : json.load ()에 전달 된 객체는 .read ()를 지원해야 하므로 urllib2.urlopen (self.name) .read () 가 작동하지 않습니다. 전달 된 Doamin은 프로토콜과 함께 제공되어야합니다.이 경우 http