Python之 爬蟲(十二)關於深度優先和廣度優先

  • 網站的樹結構
  • 深度優先算法和實現
  • 廣度優先算法和實現

網站的樹結構

經過伯樂在線網站爲例子:算法

 

 

而且咱們經過訪問伯樂在線也是能夠發現,咱們從任何一個子頁面其實都是能夠返回到首頁,因此當咱們爬取頁面的數據的時候就會涉及到去重的問題,咱們須要將爬過的url記錄下來,咱們將上圖進行更改網絡

 

 

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

深度優先

深度優先是指網絡爬蟲會從起始頁開始,一個連接一個連接跟蹤下去,處理完這條線路以後再轉入下一個起始頁,繼續追蹤連接,經過下圖進行理解:網站

注:scrapy默認採用的是深度優先算法url

這裏是深度優先,因此這裏的爬取的順序式:
A-B-D-E-I-C-F-G-H (遞歸實現)blog

深度優先算法的實現(僞代碼):遞歸

廣度優先

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

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

廣度優先代碼的實現(僞代碼):方法

相關文章
相關標籤/搜索