1. 程式人生 > >關於深度優先和廣度優先

關於深度優先和廣度優先

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

 

scrapy框架預設的是深度優先演算法

深度優先與廣度優先演算法避免爬蟲執行的時候,需要返回造成資料重複

 

深度優先

這裡是深度優先,所以這裡的爬取的順序式:
A-B-D-E-I-C-F-G-H (遞迴實現)

 

深度優先演算法程式碼實現(虛擬碼):

 

 

廣度優先:

 

廣度優先,有人也叫寬度優先,是指將新下載網頁發現的連結直接插入到待抓取URL佇列的末尾,也就是指網路爬蟲會先抓取起始頁中的所有網頁,然後在選擇其中的一個連線網頁,繼續抓取在此網頁中連結的所有網頁,通過下圖進行理解:

 

還是以這個圖為例子,廣度優先的爬取順序為:
A-B-C-D-E-F-G-H-I (佇列實現)

 

廣度優先程式碼的實現(虛擬碼):