小白爬蟲第四彈之爬蟲快跑(多程序 + 多執行緒)
PS:使用多執行緒時好像在目錄切換的問題上存在問題,可以給執行緒加個鎖試試 Hello 大家好!我又來了。你是不是發現下載圖片速度特別慢、難以忍受啊!對於這種問題 一般解決辦法就是多程序了!一個程序速度慢!我就用十個程序,相當於十個人一起幹。速度就會快很多啦!(為什麼不說多執行緒?懂點 Python 的小夥伴都知道、GIL 的存在 導致 Python 的多執行緒有點坑啊!)今天就教大家來做一個多程序的爬蟲(其實吧、可以用來做一個超簡化版的分散式爬蟲) 其實吧!還有一種加速的方法叫做 “非同步”!不過這玩意兒我沒怎麼整明白就不出來誤人子弟了!(因為爬蟲大部分時間都是在等待 response 中!‘非同步’則能讓程式在等待 response 的時間去做的其他事情。)
1
|
from datetime import datetime, timedelta
|
好了,佇列我們做好了,下面是獲取所有頁面的程式碼:
1
|
from Download import request
|
下面就是多程序 + 多執行緒的下載程式碼了:
1
|
import os
|
好啦!一個多程序多線的爬蟲就完成了,(其實你可以設定一下 MongoDB,然後調整一下連線配置,在多臺機器上跑哦!!嗯,就是超級簡化版的分散式爬蟲了,雖然很是簡陋。) 本來還想下載圖片那一塊兒加上非同步(畢竟下載圖片是I\O等待最久的時間了,),可惜非同步我也沒怎麼整明白,就不拿出來貽笑大方了。 另外,各位小哥兒可以參考上面程式碼,單獨處理圖片地址試試(就是多個程序直接下載圖片)? 我測試了一下八分鐘下載 100 套圖PS:請務必使用 第二篇博文中的下載模組,或者自己寫一個自動更換代理的下載模組!!!不然寸步難行,分分鐘被伺服器 BAN 掉!小白教程就到此結束了,後面我教大家玩玩 Scrapy;目標 頂點小說網, 爬完全站的小說。 再後面帶大家玩玩 抓新浪 湯不熱、模擬登入 之類的。或許維護一個公共代理 IP 池之類的。 這個所有程式碼我放在這個位置了:https://github.com/thsheep/mzitu/