[問題] 使用多執行緒抓網頁內容

看板Python作者 (永遠不夠花的薪水..)時間10年前 (2013/12/09 16:22), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/1
最近在用 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

12/09 18:24, , 1F
try gevent
12/09 18:24, 1F

12/09 18:28, , 2F
網路連線怎麼可能不扯到封包傳送....
12/09 18:28, 2F

12/09 18:30, , 3F
你的速度瓶頸會不會卡在網路速度?
12/09 18:30, 3F

12/10 00:25, , 4F
gevent++ 感覺是卡在io
12/10 00:25, 4F

12/10 00:39, , 5F
改用 gevent 之後,可以達到滿足我的需求了
12/10 00:39, 5F

12/10 00:40, , 6F
我一次把10個網站加到 list 裡面去抓資料
12/10 00:40, 6F

12/10 00:40, , 7F
抓完之後再呼叫接下來10個...
12/10 00:40, 7F

12/10 00:40, , 8F
不知道 gevent + threading 會不會更快?
12/10 00:40, 8F

12/10 08:41, , 9F
Try scrapy
12/10 08:41, 9F

12/14 21:07, , 10F
gevent+threading感覺不會比較快...
12/14 21:07, 10F
文章代碼(AID): #1IfNsvdr (Python)