1. 程式人生 > >搜尋引擎—網路爬蟲抓取策略

搜尋引擎—網路爬蟲抓取策略

爬蟲的不同抓取策略,就是利用不同的方法確定待抓取URL佇列中URL優先順序的。

爬蟲的抓取策略有很多種,但不論方法如何,基本目標一致:優先選擇重要網頁進行抓取。
網頁的重要性,評判標準不同,大部分採用網頁的流行性進行定義。

效果較好或有代表性的抓取策略:
1、寬度優先遍歷策略
2、非完全PageRank策略
3、OCIP策略
4、大站優先策略

1、寬度優先策略(Breath First)

基本思想:將新下載網頁包含的連結直接追加到待抓取URL佇列末尾。

這裡寫圖片描述

上圖即為此策略示意圖:
假設隊頭的網頁是1號網頁,從1號網頁中抽取出3個連結指向2號、3號和4號網頁,於是按照編號順序依次放入待抓取URL佇列,圖中網頁的編號就是在待抓取URL佇列中的順序編號,之後爬蟲以此順序進行下載。

實驗表明,這種策略效果很好,雖然看似機械,但實際上的網頁抓取順序基本上是按照網頁的重要性排序。之所以如此,有研究人員認為:如果某個網頁包含很多入鏈,那麼更有可能被寬度優先遍歷策略早早抓到,入鏈個數從側面體現了網頁的重要性,即實際上寬度優先遍歷策略隱含了一些網頁優先順序假設。

2、非完全PageRank策略(Partial PageRank)

基本思路:對於已經下載的網頁,加上待抓取URL佇列中的URL一起,形成網頁集合,在此集合內進行PageRank計算,計算完成後,將待抓取URL佇列裡的網頁按照PageRank得分由高到低排序,形成的序列就是爬蟲接下來應該依次抓取的URL列表。

如果每次新抓取到一個網頁,就進行重新計算新的非完全PageRank,明顯效率太低。折中辦法是網頁攢夠K個計算一次。
這裡寫圖片描述

上圖即為非完全PageRank策略示意圖:
設定每下載3個網頁進行新的PageRank計算,此時已經有{1,2,3}3個網頁下載到本地。這三個網頁包含的連結指向{4,5,6},即待抓取URL佇列,如何決定下載順序?
將這6個網頁形成新的集合,對這個集合計算PageRank的值,這樣4、5、6就獲得自己對應的PageRank值,由大到小排序,即可得出下載順序。假設順序為5,4,6,當下載55頁面後抽取出連結,指向頁面8,此時賦予8臨時PageRank值,如果這個值大於4和6的PageRank,則接下來優先下載頁面8,如此不斷迴圈,即形成了非完全PageRank策略的計算思路。

3、OCIP策略(Online Page Importance Computation)

OCIP字面意思即“線上頁面重要性計算”,可以將其看做是一種改進的PageRank演算法。

基本思路:
在演算法開始之前,每個網際網路頁面都給予相同的“現金”,每當下載了某個頁面P後,P就將自己擁有的現金平均分配給頁面中包含的連結頁面,把自己的“現金”清空。而對於待爬取URL佇列中的網頁,則根據其手頭擁有的“現金”金額多少排序,優先下載“現金”最多的網頁,OPIC從大的框架上與PageRank思路基本一致。

與PageRank的區別在於:PageRank每次需要迭代計算,而OPIC策略不需要迭代過程。所以計算速度遠遠快與PageRank,適合實時計算使用。同時,PageRank在計算時,存在向無連結關係網頁的遠端跳轉過程,而OPIC沒有這一計算因子。實驗結果表明,OPIC是較好的重要性衡量策略,效果略優於寬度優化遍歷策略。

4、大站優先策略(Larger Sites First)

大站優先策略思路:
以網站為單位來選題網頁重要性,對於待爬取URL佇列中的網頁,根據所屬網站歸類,如果哪個網站等待下載的頁面最多,則優先下載這些連結,其本質思想傾向於優先下載大型網站。因為大型網站往往包含更多的頁面。鑑於大型網站往往是著名企業的內容,其網頁質量一般較高,所以這個思路雖然簡單,但是有一定依據。實驗表明這個演算法效果也要略優先於寬度優先遍歷策略。

參考:《這就是搜尋引擎-核心技術詳解》