【发布时间】:2009-12-01 04:51:24
【问题描述】:
我很困惑为什么我无法使用 urllib2 从 FriendFeed 下载一些 JSON 响应的全部内容。
>>> import urllib2
>>> stream = urllib2.urlopen('http://friendfeed.com/api/room/the-life-scientists/profile?format=json')
>>> stream.headers['content-length']
'168928'
>>> data = stream.read()
>>> len(data)
61058
>>> # We can see here that I did not retrieve the full JSON
... # given that the stream doesn't end with a closing }
...
>>> data[-40:]
'ce2-003048343a40","name":"Vincent Racani'
如何使用 urllib2 检索完整响应?
【问题讨论】:
-
网站已损坏。在浏览器中尝试。
-
在 Ubuntu 9.04 上使用 Firefox 3.0 访问该 URL 时,我得到了完整的 165K 响应。检索到的 JSON 文档在我的浏览器中格式正确。
-
是的,该站点已损坏。但这肯定是
urllib和urllib2中的一个错误,因为其他工具(curl、wget)报告不完整的响应。很高兴知道 python 库中有什么问题。 -
啊,好吧,当我使用浏览器或 curl 检索另一个房间配置文件 friendfeed.com/api/room/friendfeed-feedback/profile?format=json 时,我刚刚获得了一个不完整的检索结果,因此来自服务器的响应似乎中断了。我已向 API 开发人员发送了一封电子邮件。对不起,大雁追逐。 :-( 当他发现错误时我会报告。
-
我遇到了同样的问题。奇怪的是, urllib.urlretrieve() 检索整个内容(并将其放入文件中),因此其中可能有一些代码可以使用