当前位置: 首页 > 面试题库 >

urllib2无法检索整个HTTP响应

祁飞扬
2023-03-14
问题内容

对于为什么我无法使用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检索完整响应?


问题答案:

获取所有数据的最佳方法:

fp = urllib2.urlopen("http://www.example.com/index.cfm")

response = ""
while 1:
    data = fp.read()
    if not data:         # This might need to be    if data == "":   -- can't remember
        break
    response += data

print response

原因是.read()考虑到套接字的性质,不能保证返回整个响应。我以为是在文档中讨论过的(也许是urllib),但找不到。



 类似资料:
  • 所以我有一个sub-reddits列表,我用urllib打开它们。在我仔细研究之后,urllib最终失败了: 做了一些研究,我发现reddit通过IP限制了对其服务器的请求数量: 每两秒钟不要提出超过一个请求。请求的突发有一定的空间,但要保持理智。一般来说,一分钟内不要超过30个请求。 所以我想我应该使用将我的请求限制在每10秒一页。这最终也失败了。 上面的引用是从reddit API页面获取的。

  • 我正在开发一个应用程序并发出一个http请求,该请求运行良好, 这是我的异步类Doinbackground方法: 这就是我使用的逻辑 但这给了我大量的json字符串,它破坏了json格式,我无法相应地解析对象和数组。好心帮忙 这里是我的json解析方法 这是我的onPost方法: 但是我仍然无法解析所有的数据,因为仍然在结果参数的onPost方法中,我没有完整的响应 我还检查了浏览器上的url,响

  • 问题内容: 我正在使用JSch连接到SSH并执行命令。其中一个命令给出了很大的输出。在终端中,如果执行命令,则必须按Enter键才能查看整个输出。使用JSch,我无法检索整个输出。 当我使用交互式终端登录时,命令输出在填充屏幕后停止并等待。 该代码取自 如何在String中获取jschshell命令输出: 问题答案: 通常,您不应使用“ shell”通道来自动执行命令。 “外壳”通道旨在实现交互式

  • 问题内容: 我需要编写一个命令行客户端,以便在服务器上播放井字游戏。服务器接受http请求并将json发送回我的客户端。我正在寻找一种快速的方法,以使用Boost库发送http请求并以字符串形式接收json。 问题答案: 符合说明的最简单的事情: 这将收到完整的响应。您可以使用虚拟服务器对其进行测试:( 也可以 在Coliru上运行): 这将表明已收到请求,并且响应将由上面的客户代码写出。 请注意

  • 问题内容: MVC4 +实体框架4.4 + MySql + POCO /代码优先 我正在设置以上配置..这是我的课程: 这是我的web.config设置… 数据库AND表已经存在… 我对mvc还是很陌生,但是正在使用本教程 应用程序构建良好…但是,当我尝试使用Product(BTD.Data)作为我的模型类并使用BTDContext(BTD.DataContext)作为我的数据上下文类添加控制器时

  • 脚本: 超文本标记语言: 我试图获取的文本与帐单地址相同。我也尝试过使用getText(),但没有返回任何结果。