面試題 爬蟲的廣度優先和深度優先

2021-08-16 23:42:31 字數 708 閱讀 1760

**:

整個的廣度優先爬蟲過程就是從一系列的種子節點開始,把這些網頁中的」子節點」(也就是超連結)提取出來,放入佇列中依次進行抓取。被處理過的鏈結需要放 入一張表(通常稱為visited表)中。每次新處理乙個鏈結之前,需要檢視這個鏈結是否已經存在於visited表中。如果存在,證明鏈結已經處理過, 跳過,不做處理,否則進行下一步處理。

初始的url位址是爬蟲系統中提供的種子url(一般在系統的配置檔案中指定)。當解析這些種子url所表示的網頁時,會產生新的url(比如從頁面中的 「中提取出 這個鏈結)。然後,進行以下工作:

1. 把解析出的鏈結和visited表中的鏈結進行比較,若visited表中不存在此鏈結,表示其未被訪問過。

2. 把鏈結放入todo表中。

3. 處理完畢後,再次從todo表中取得一條鏈結,直接放入visited表中。

4. 針對這個鏈結所表示的網頁,繼續上述過程。如此迴圈往復。

廣度優先遍歷是爬蟲中使用最廣泛的一種爬蟲策略,之所以使用廣度優先搜尋策略,主要原因有三點:

1. 重要的網頁往往離種子比較近,例如我們開啟新聞**的時候往往是最熱門的新聞,隨著不斷的深入衝浪,所看到的網頁的重要性越來越低。

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

3. 廣度優先有利於多爬蟲的合作抓取,多爬蟲合作通常先抓取站內鏈結,抓取的封閉性很強。

深度優先和廣度優先

在爬蟲系統中,待抓取url佇列是很重要的一部分,待抓取url佇列中的url以什麼樣的順序排隊列也是乙個很重要的問題,因為這涉及到先抓取哪個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面是常用的兩種策略 深度優先 廣度優先 注 scrapy預設採用的是深度優先演算法 這裡是深...

深度優先和廣度優先區別

一 深度優先搜尋的特點是 1.深度優先搜尋法有遞迴以及非遞迴兩種設計方法。一般的,當搜尋深度較小 問題遞迴方式比較明顯時,用遞迴方法設計好,它可以使得程式結構更簡捷易懂。當資料量較大時,由於系統堆疊容量的限制,遞迴容易產生溢位,用非遞迴方法設計比較好。2.深度優先搜尋方法有廣義和狹義兩種理解。廣義的...

深度優先和廣度優先遍歷

1.深度優先遍歷 從某個節點r出發,訪問子節點l1,若l1還有左子節點l1l,則訪問l1l,否則訪問子節點l1的右子節點l1r,遞迴訪問,直到所有的節點都被訪問到為止。無向圖的深度優先搜尋 遍歷順序為 a c b d f g e 有向圖的深度優先搜尋 遍歷順序為 a b c e d f g 2.廣度...