淺談網路爬蟲中深度優先演算法和簡單程式碼實現
阿新 • • 發佈:2018-11-06
學過網站設計的小夥伴們都知道網站通常都是分層進行設計的,最上層的是頂級域名,之後是子域名,子域名下又有子域名等等,同時,每個子域名可能還會擁有多個同級域名,而且URL之間可能還有相互連結,千姿百態,由此構成一個複雜的網路。
當一個網站的URL非常多的時候,我們務必要設計好URL,否則在後期的理解、維護或者開發過程中就會非常的混亂。理解以上的網頁結構設計之後,現在正式的引入網路爬蟲中的深度優先演算法。
上圖是一個二叉樹結構,通過對這個二叉樹的遍歷,來類比抓取網頁,加深對爬蟲策略的理解。深度優先演算法的主要思想是首先從頂級域名A開始,之後從中提取出兩個連結B和C,待連結B抓取完成之後,下一個要抓取的連結則是
下圖展示的是深度優先演算法的程式碼實現過程。
深度優先過程實際上是通過一種遞迴的方式來進行實現的。看上圖的程式碼,首先定義一個函式,用於實現深度優先過程,然後傳入節點引數,如果該節點非空的話,則將其打印出來,可以類比一下二叉樹中的頂級點A。將節點列印完成之後,看看其是否存在左節點(連結B)和右節點(連結C),如果左節點非空的話,則將其進行返回,再次呼叫深度優先函式本身進行遞迴,得到新的左節點(連結
深度優先過程通過遞迴的方式來進行實現,當遞迴不斷進行,沒有跳出遞迴或者遞迴太深的話,很容易出現棧溢位的情況,所以在實際應用的過程中要有這個意識。
深度優先演算法和廣度優先演算法是資料結構裡邊非常重要的一種演算法結構,也是非常常用的一種演算法,而且在面試過程中也是非常常見的一道面試題,所以建議大家都需要掌握它,下一篇文章我們將介紹廣度優先演算法,敬請期待。
關於網路爬蟲中深度優先演算法的簡單介紹就到這裡了,小夥伴們get到木有咧?