为了账号安全,请及时绑定邮箱和手机立即绑定

Python可用时逐行读取网站数据

Python可用时逐行读取网站数据

一只名叫tom的猫 2021-03-01 08:10:52
我urllib2用来从url读取数据,下面是代码片段:data = urllib2.urlopen(urllink)for lines in data.readlines():  print lines我打开的网址实际上是一个cgi脚本,该脚本执行一些处理并并行打印数据。CGI脚本大约需要30分钟才能完成。因此,使用上述代码,当CGI脚本的执行完成时,我只能在3分钟后看到输出。我如何从URL中读取数据,并立即将其打印出来。
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

只需直接在文件对象上循环即可:


for line in data:

    print line

这将逐行读取传入的数据流(在内部,.readline()每次迭代时都会调用套接字fileobject )。这确实假定您的服务器正在尽快发送数据。


调用.readlines()(复数)可确保您在开始循环之前已阅读了整个请求,请不要这样做。


或者,使用requests库,它对请求流具有更明确的支持:


import requests


r = requests.get(url, stream=True)


for line in r.iter_lines():

    if line: print line

请注意,这仅在服务器立即开始流传输数据时才起作用。如果您的CGI在过程完成之前不产生数据,则尝试流式传输数据毫无意义。


查看完整回答
反对 回复 2021-03-29
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信