爬蟲(一)---爬行算法

最近想梳理一下搜索搜索引擎相關的理論與技術,從爬蟲開始,總結一下這方面的問題與解決方案。


不論是分佈式爬蟲還是單體爬蟲、主題爬蟲等,最關鍵的是爬行算法,而作爲爬蟲數據源的互聯網可以抽象的看作是一張有向圖,現對該圖定義如下:

1.將互聯網定義爲圖

2.每個頁面定義爲圖節點

3.頁面中的鏈接定義爲有向邊

簡而言之,爬蟲通過遍歷這張有向圖來爬取相關信息,並使用這些信息創建索引供檢索程序查詢。

圖的遍歷算法有深度優先算法與寬度優先算法,而前者容易使爬蟲陷入黑洞,所以寬度優先算法被用來實現爬蟲的爬行算法,但是有時也不會完全按照寬度優先算法進行爬行,而是做相應的變通,如帶偏好的爬行算法。


首先來看圖的寬度的優先遍歷算法,

圖1爲要遍歷的圖:

195413758.png

圖-1 要遍歷的有向圖


選擇A爲遍歷的根節點,則具體的遍歷過程如下表所示:



操作隊列
初始化
A入隊A
A出隊
BCDEF入隊BCDEF
B出隊
CDEF
C出隊

DEF

D出隊EF
E出隊F
H入隊FH
F出隊H
G入隊HG
H出隊G
I入隊GI
G出隊I
I出隊


表-1 圖遍歷過程

從上表中可以歸納出,圖節點的遍歷過程爲:

A->B->C->D->E->F->H->G->I



爬蟲以寬度優先算法遍歷互聯網

現定於如下:

1).將根URl選定爲圖的起始節點

2).某URL對應的頁面中含有的子URL(對應的頁面)爲該URL的子節點。

3).通過解析->入TODO隊列->入VISITED的隊列這一往復過程實現遍歷。

203850952.png

圖-2 流程圖

寬度優先遍歷算法是爬蟲中採用最爲廣泛的爬行算法,主要有以下幾個原因:

1).重要的網頁一般離種子比較近

2).互聯網的實際深度最多能達到17層,但到達某個網頁總存在一條很短的路徑,而寬度優先遍歷會以最快的速度到達這個網頁。

3).寬度優先遍歷有利於多爬蟲合作抓取,單體爬蟲往往會先抓取站內鏈接,封閉性很強。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章