作者oarpvfpre (永远不够花的薪水..)
看板Python
标题[问题] 使用多执行绪抓网页内容
时间Mon Dec 9 16:22:13 2013
最近在用 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 等方式实作,才能满足我的需求
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.20.117.109
1F:推 AlanSung:try gevent 12/09 18:24
2F:推 darkgerm:网路连线怎麽可能不扯到封包传送.... 12/09 18:28
3F:→ darkgerm:你的速度瓶颈会不会卡在网路速度? 12/09 18:30
4F:推 carlcarl:gevent++ 感觉是卡在io 12/10 00:25
5F:→ oarpvfpre:改用 gevent 之後,可以达到满足我的需求了 12/10 00:39
6F:→ oarpvfpre:我一次把10个网站加到 list 里面去抓资料 12/10 00:40
7F:→ oarpvfpre:抓完之後再呼叫接下来10个... 12/10 00:40
8F:→ oarpvfpre:不知道 gevent + threading 会不会更快? 12/10 00:40
9F:推 timTan:Try scrapy 12/10 08:41
10F:→ carlcarl:gevent+threading感觉不会比较快... 12/14 21:07