2014-10-20 44 views
0

我对Python相当陌生,我试图对返回JSON的URL执行HTTP请求。我的代码是:Python 3.4.1 - 读取HTTP请求数据

url = "http://myurl.com/" 
req = urllib.request.Request(url) 
response = urllib.request.urlopen(req) 
data = response.read() 

我收到一个错误消息:“'bytes'对象没有'read'属性。我四处搜寻,但还没有找到解决办法。有什么建议么?

+2

这不能成为你真正的代码。在你真实的代码中,尝试'print(type(response))'和/或'print(repr(response))'来看看你代替了这个代码返回的'http.client.HTTPResponse'。然后向我们展示您的真实代码,我们可以告诉您为什么你有这个。 – abarnert 2014-10-20 20:59:02

+0

引起这个问题的最明显的错误是'response = urllib.request.urlopen(req).read()',所以你对'read()'的结果调用'read()',但是无数的其他方式可以做到这一点,我们无法猜测你没有[MCVE](http://stackoverflow.com/help/mcve)做了哪一个。 – abarnert 2014-10-20 20:59:54

+0

http://stackoverflow.com/questions/6862770/python-3-let-json-object-accept-bytes-or-let-urlopen-output-strings – 2014-10-20 21:23:02

回答

0

您可能会发现requests库更容易使用:

import requests 
data = requests.get('http://example.com').text 

,或者,如果你需要的原料,未解码的字节,

import requests 
data = requests.get('http://example.com').content