廣度優先搜索 Breadth-First Search (BFS)
深度優先搜索 Depth-First Search (DFS)
網絡爬蟲:
從任何一個網頁出發,用圖的遍歷算法,自動訪問每個網頁並把它們存儲起來,完成這個功能的程序叫Web Crawlers.
構建網絡爬蟲的工程要點:
1、在有限時間裏最多的爬下最重要的網頁:
重要:首頁。再擴大爬蟲,從首頁擴展鏈接。-----類似BFS
爬蟲的分佈式結構 和 網絡通信的握手成本 有關。握手:下載服務器和網站的服務器建立通信的過程,這個過程需要額外時間。下載完一個網站才能再下載下一個網站------類似DFS
網絡爬蟲的遍歷不是簡單地BFS or DFS,有一個相對複雜的 下載優先級排序的方法----調度系統,同時存在一個優先級隊列 Priority Queue。
2、頁面的分析和URL的提取。
頁面解析出URL比較複雜,需要模擬瀏覽器運行一個網頁,才能得到裏面隱含的URL。
3、記錄哪些網頁已經下載過的小本本——URL表。
採用哈希表,好處是,判斷一個網頁的URL是否在表中,平均只需要一次(或者略多的)查找。
問題:哈希表會很大,一個服務器存儲不下。
多臺服務器會對哈希表訪問與維護,哈希表服務器的通信工作爲瓶頸。
解答:明確每臺下載服務器的分工,調度時看到某個URL就知道交給哪臺服務器去下載。
明確分工之後,判斷URL是否可以下載可以採用批問詢和批處理,減少通信次數。