簡單分布式爬蟲——第四彈:關(guān)于簡單分布式爬蟲的一點(diǎn)想法

在前面的三講
簡單分布式爬蟲——第一彈:了解分布式爬蟲結(jié)構(gòu)
簡單分布式爬蟲——第二彈:masterSpider的實(shí)現(xiàn)
簡單分布式爬蟲——第三彈:nodeSpider的實(shí)現(xiàn)
當(dāng)中,我們從頭打造了一個簡單的主從分布式爬蟲,在這里做個簡單的總結(jié),為了清晰描述爬蟲流程,借助于如下這張經(jīng)典的爬蟲框架圖:

爬蟲框架圖

上圖適用于常規(guī)的爬蟲,也適用于分布式爬蟲,區(qū)別在于是否有獨(dú)立的爬蟲調(diào)度器來協(xié)調(diào)后續(xù)各部分。分布式爬蟲就是將爬蟲調(diào)度器獨(dú)立出來由一臺主機(jī)實(shí)現(xiàn),而將具體爬取工作交由從機(jī)來完成,主機(jī)僅負(fù)責(zé)任務(wù)調(diào)度。
在第一講中我們探討過這種主從式爬蟲存在的缺陷:整個爬蟲性能受限于masterSpider,尤其是當(dāng)nodeSpider數(shù)量增多時。那么如何應(yīng)對這種缺陷?一個思路是我們最簡化masterSpider的工作量,將除了url管理之外的其他工作完全交由從機(jī)完成,也就是從機(jī)需要完成url內(nèi)容獲取、解析以及數(shù)據(jù)保存。當(dāng)然這種方法并不能大幅提升爬蟲性能,如果對爬蟲性能有更高要求就要考慮其他形式的爬蟲框架,不過,對于一般來講,這種框架也足夠應(yīng)對。
另外,這里的分布式爬蟲只是提供了一個最基本的雛形,在實(shí)際應(yīng)用上還可以加以擴(kuò)展,比如現(xiàn)在很多網(wǎng)站都采取了反爬技術(shù),其中一條就是限制一段時間內(nèi)IP訪問次數(shù),這種情況下常用的方法就是利用代理IP來爬取。那么我們就可以在這個框架的基礎(chǔ)上增加IP代理爬取,所有的代理都由masterSpider進(jìn)行管理,另開一個網(wǎng)絡(luò)隊(duì)列管理代理IP,nodeSpider從網(wǎng)絡(luò)隊(duì)列一方面獲取url另一方面獲取代理IP,利用代理來爬取網(wǎng)站,同時可以將代理IP的可用性反饋給masterSpider,由masterSpider進(jìn)行代理IP的管理(去除無效代理等)。
豆瓣圖書api爬蟲是本人的一個練手項(xiàng)目,給定書名利用豆瓣api進(jìn)行圖書檢索,并保存圖書信息,由于api限定了每個IP的訪問頻次(100次/小時),所以這里用到了代理IP進(jìn)行爬取。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。