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是strtypes,我期待一个JSON。 有没有什么办法可以捕获响应作为JSON或Python字典,而不是一个str。

如果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
由r.info()返回的HTTPMessage

小心validation等,但直接的解决scheme是这样的:

 import json the_dict = json.load(response) 
 resource_url = 'http://localhost:8080/service/' response = json.loads(urllib2.urlopen(resource_url).read()) 
 """ 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") 

这里提供的例子都没有为我工作。 它们是用于Python 2(uurllib2)或用于Python 3的返回错误“ImportError:No module named request”。 我谷歌的错误消息,它显然需要我安装一个模块 – 这显然是不能接受这样一个简单的任务。

这段代码适用于我:

 import json,urllib data = urllib.urlopen("https://api.github.com/users?since=0").read() d = json.loads(data) print (d) 

虽然我想它已经回答了,我想在这里加一点点

 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