從上一章我們知道,獲取鏈接是爬蟲工作的第一步.
除去我們事先給與的鏈接外,大部分鏈接都要靠通過挖掘現(xiàn)有的鏈接得到,而網(wǎng)上的網(wǎng)頁很多是重復的,過期的和沒有參考性的。那么,我們?nèi)绾卧谂廊∵^程中避免出現(xiàn)這些情況呢?我們可以通過地址去重來避免抓取的重復頁面,然后通過價值算法來提升優(yōu)質(zhì)鏈接的優(yōu)先級來避免抓取到無參考性的和過期的頁面.
首先我們來說下地址去重。這指的是由于獲取方式的不固定,那么就有可能存在地址重復的問題,我們可以在鏈接送到下載模塊之前,對整個地址池內(nèi)的鏈接進行去重操作.這樣我們就可以防止同一個鏈接反復多次抓取從而浪費資源和性能。
然后我們通過通過對鏈接進行價值估算來實現(xiàn)優(yōu)先級順序.可以根據(jù)權(quán)重來決定傳遞給下載模塊的鏈接.既然我們目標是最短的時間內(nèi)獲取到最優(yōu)質(zhì)的數(shù)據(jù),那么肯定是高價值的頁面具有最高優(yōu)先級.我們可以通過擬定的權(quán)重(例如數(shù)據(jù)準確,更新迅速,網(wǎng)頁接口好等等),將地址分為幾個檔次,在傳遞鏈接時,優(yōu)先提供價值高的鏈接。這樣可以有效的提高獲取優(yōu)質(zhì)數(shù)量的效率.
比如說,我們可以通過日后講的消息隊列來實現(xiàn)價值估算。最開始,我們給每個地址加上相同的時間屬性.該時間屬性是用來表示我們應該多久重復來爬取一次.然后經(jīng)過幾次測試后,將更新快的與不更新的區(qū)分開,最終打上優(yōu)先級.然后在爬蟲取出鏈接時,可以根據(jù)優(yōu)先級來獲取鏈接.簡化版流程圖如下:
這流程圖只畫了了一個流程,我們可以通過多次流程來更精準的確定各鏈接的優(yōu)先級.
最后的地址模塊內(nèi)部的流程圖就是這樣: