Python - 使用Comet和HTTP流进行网页抓取
我需要从 fxstreet 网站提取数据。我用火狐浏览器的火bug工具抓取了网页的HTML代码,发现这个网页使用了Comet和HTTP流式传输技术。
我想每秒更新一次字典里的数据,而不需要刷新页面。我之前用urllib.urlopen实现了这个功能,但每秒都得发一次请求。
有没有人知道从Comet和HTTP流式传输中提取数据的合适方法?谢谢!
3 个回答
0
我不是这方面的专家,但我知道Comet的工作方式是只有在接近请求的时间限制时,或者服务器上有变化时,才会响应请求。所以你可以发起Comet请求,并且可以假设在Comet请求返回之前,数据是没有变化的。
简单来说,你可以发起Comet请求,并且把Comet请求返回的数据存储在一个表格里。然后通过另一个请求(这个请求可以每秒发送一次),来检查表格中是否有新添加的数据,如果有,就把这些数据返回。
这就是你所期待的吗?
0
只需要获取数据,然后在同一时刻重新创建查询,而不是等1秒钟。Comet的意思是服务器在有新数据可用之前不会回应你。
2
你可能想用 gevent、Tornado 或 Twisted 来写一个异步的 HTTP 客户端,以便访问你的服务。其实,有很多项目是专门为使用 Twitter Streaming API 而做的,你可以参考一下这些项目:
- https://github.com/fiorix/twisted-twitter-stream - 用的是
twisted
- https://github.com/dustin/twitty-twister - 也是
twisted
- https://github.com/atl/twitstream - 用的是
asyncore
、pycurl
或tornado
- https://github.com/godavemon/TwitTornado - 用的是
tornado
- https://github.com/thruflo/close.consumer - 用的是
gevent