[问题] 使用多执行绪抓网页内容

楼主: oarpvfpre (永远不够花的薪水..)   2013-12-09 16:22:13
最近在用 python 写一个可同时抓取多个网页的多执行绪程式
呼叫 httplib 抓某个 url 的 response code (200, 404, 403, 401...)
参考 stackoverflow 的文章,使用 threading + Queue 的方式
http://stackoverflow.com/questions/2632520/what-is-the-fastest-way-to-send-100-000-http-requests-in-python
发现好像跟自己 for loop 去做的速度差不多
研究一下之后发现,如果不牵扯到封包传送的话
threading 的方式是可以 work 的 (直接把 httplib.getresponse 那段 mark 掉)
但是只要有传送封包,multithread 就没有办法正常运作 (就只能一个一个送)
想请问各位这样的问题是否因为 httplib, urllib, urllib2 等 lib 没办法同时传送
必须使用 twisted, asyncore 等方式实作,才能满足我的需求
谢谢
作者: AlanSung   2013-02-09 18:24:00
try gevent
作者: darkgerm (黑骏)   2013-02-09 18:28:00
网络连线怎么可能不扯到封包传送....你的速度瓶颈会不会卡在网络速度?
作者: carlcarl (carl)   2013-02-10 00:25:00
gevent++ 感觉是卡在io
楼主: oarpvfpre (永远不够花的薪水..)   2013-02-10 00:39:00
改用 gevent 之后,可以达到满足我的需求了我一次把10个网站加到 list 里面去抓资料抓完之后再呼叫接下来10个...不知道 gevent + threading 会不会更快?
作者: timTan (用口头禅区分年记)   2013-02-10 08:41:00
Try scrapy
作者: carlcarl (carl)   2013-02-14 21:07:00
gevent+threading感觉不会比较快...

Links booklink

Contact Us: admin [ a t ] ucptt.com