- 實戰Python網絡爬蟲
- 黃永祥
- 1089字
- 2019-11-22 18:44:31
1.4 爬蟲的搜索策略
在互聯網數據時代,有三大搜索策略需要有所了解,下面一一介紹。
1.深度優先搜索
深度優先搜索是在開發爬蟲早期使用較多的方法,目的是達到被搜索結構的葉結點(那些不包含任何超級URL的HTML文件)。在一個HTML文件中,當一個URL被選擇后,被選URL將執行深度優先搜索,搜索后得到新的HTML文件,再從新的HTML獲取新的URL進行搜索,以此類推,不斷地爬取HTML中的URL,直到HTML中沒有URL為止。
深度優先搜索沿著HTML文件中的URL走到不能再深入為止,然后返回到某一個HTML文件,再繼續選擇該HTML文件中的其他URL。當不再有其他URL可選擇時,說明搜索已經結束。其優點是能遍歷一個Web站點或深層嵌套的文檔集合。缺點是因為Web結構相當深,有可能造成一旦進去再也出不來的情況發生。
舉個例子,比如一個網站的首頁里面帶有很多URL,深度優先通過首頁的URL進入新的頁面,然后通過這個頁面里的URL再進入新的URL,不斷地循環下去,直到返回的頁面沒有URL為止。如果首頁有兩個URL,選擇第一個URL后,生成新的頁面就不會返回首頁,而是在新的頁面選擇一個新的URL,這樣不停地訪問下去。
2.寬度優先搜索
寬度優先搜索是搜索完一個Web頁面中所有的URL,然后繼續搜索下一層,直到底層為止。例如,首頁中有3個URL,爬蟲會選擇其中之一,處理相應的頁面之后,然后返回首頁再爬取第二個URL,處理相應的頁面,最后返回首頁爬取第三個URL,處理第三個URL對應的頁面。
一旦一層上的所有URL都被選擇過,就可以開始在剛才處理過的頁面中搜索其余的URL,這就保證了對淺層的優先處理。當遇到一個無窮盡的深層分支時,不會導致陷進深層文檔中出不來的情況發生。寬度優先搜索策略還有一個優點,能夠在兩個頁面之間找到最短路徑。
寬度優先搜索策略通常是實現爬蟲的最佳策略,因為它容易實現,而且具備大多數期望的功能。但是如果要遍歷一個指定的站點或者深層嵌套的HTML文件集,用寬度優先搜索策略就需要花費較長時間才能到達最底層。
3.聚焦爬蟲的爬行策略
聚焦爬蟲的爬行策略只針對某個特定主題的頁面,根據“最好優先原則”進行訪問,快速、有效地獲得更多與主題相關的頁面,主要通過內容與Web的URL結構指導進行頁面的抓取。聚焦爬蟲會給所下載的頁面一個評價分,根據得分排序插入一個隊列中。最好下一個搜索對彈出隊列的第一個頁面進行分析后執行,這種策略保證爬蟲能優先跟蹤那些最有可能URL到目標頁面的頁面。
決定網絡爬蟲搜索策略的關鍵是評價URL價值,即URL價值的計算方法,不同的價值評價方法計算出的URL的價值不同,表現出的URL的“重要程度”也不同,從而決定不同的搜索策略。由于URL包含于頁面之中,而通常具有較高價值的頁面包含的URL也具有較高價值,因此對URL價值的評價有時也轉換為對頁面價值的評價。
- Learn TypeScript 3 by Building Web Applications
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- LaTeX Cookbook
- Java高并發核心編程(卷2):多線程、鎖、JMM、JUC、高并發設計模式
- Raspberry Pi Networking Cookbook(Second Edition)
- Rake Task Management Essentials
- Servlet/JSP深入詳解
- 程序員考試案例梳理、真題透解與強化訓練
- Rust Cookbook
- Mastering LibGDX Game Development
- Python爬蟲、數據分析與可視化:工具詳解與案例實戰
- HTML5開發精要與實例詳解
- Odoo 10 Implementation Cookbook
- 鴻蒙OS應用編程實戰
- Mastering SciPy