網絡爬蟲理論基礎
文章目錄
- 網絡爬蟲理論基礎
- 1. 網絡爬蟲的基本概念
- 網絡爬蟲初識
- 為何要學習爬蟲
- 網絡爬蟲的組成
- 網絡爬蟲的類型
- 重點--聚焦爬蟲
- 2. 網絡爬蟲的用途
- 網絡爬蟲的常用功能
- 搜尋引擎核心
- 使用者爬蟲
- 3. 網絡爬蟲實作原理與技術
- 網絡爬蟲實作原理
- 1 通用網絡爬蟲
- 2 聚焦網絡爬蟲
- 爬行政策
- 更新政策
- 網頁分析算法
- 身份識别
- 網絡爬蟲實作技術
1. 網絡爬蟲的基本概念
網絡爬蟲初識
網絡爬蟲(Crawler)又稱網絡蜘蛛(Spider),網絡螞蟻(Ant)和網絡機器人(Robot),可以按照事先制定的規則(爬蟲算法)自動地浏覽并擷取網頁資訊的計算機程式。
爬蟲是搜尋引擎的核心元件,這種爬蟲稱為通用爬蟲,目的是盡可能多地爬取網頁。
為何要學習爬蟲
- 資料采集,為資料分析提供原材料
- 私人定制搜尋引擎
- 了解爬蟲原理,更好地進行搜尋引擎優化(SEO)
- 就業需求旺,薪酬高
網絡爬蟲的組成
網絡爬蟲由控制節點、爬蟲節點和資源庫構成:
- 控制節點,配置設定任務,排程協調
- 爬蟲節點,采集(下載下傳網頁)加工(文本處理),存儲入庫
- 資源庫,存放采集結果和輔助加工處理的資源倉庫
網絡爬蟲的類型
網絡爬蟲按照實作技術和結構可分為:
- 通用網絡爬蟲(General Purposed Web Crawler):即全網爬蟲,爬取海量資料,大型搜尋引擎的核心。主要由初始(種子)URL集合、URL隊列、頁面爬行子產品、頁面分析子產品、頁面資料庫、連結過濾子產品等構成。其爬行政策主要有**深度優先(DF)和廣度優先(BF)**政策。
- 聚焦網絡爬蟲(Focused Web Crawler):即主題網絡爬蟲,按照預先定義好的主題有選擇地進行網頁爬取的一種爬蟲。主要由初始(種子)URL集合、URL隊列、頁面爬行子產品、頁面分析子產品、頁面資料庫、連結過濾子產品、内容評價子產品、連結評價子產品等構成。其爬行政策主要有四種:基于内容評價的爬行政策、基于連結評價的爬行政策、基于增強學習的爬行政策和基于語境圖的爬行政策。
- 增量式網絡爬蟲(Incremental Web Crawler):隻爬取内容發生變化或新網頁的爬蟲,即隻對變化感興趣的爬蟲。
- 深層網絡爬蟲(Deep Web Crawler):可以爬取深層頁面的爬蟲。所謂深層頁面是指隐藏于表單之後,不能通過靜态連結直接擷取,需要送出一定關鍵詞(填寫表單)之後才能擷取的到的頁面。主要由初始(種子)URL清單、LVS清單(用來填充表單的标簽數值集)、爬行控制器、解析器、LVS控制器、表單分析器、響應分析器等構成。深層網絡爬蟲表單填寫的方式有兩類:基于領域知識的表單填寫和基于網頁結構分析的表單填寫
重點–聚焦爬蟲
由于聚集爬蟲可以按相應的主題有目的地進行頁面(資料)爬取,可以節省大量伺服器和帶寬資源,具有很強的實用性。 聚焦爬蟲的工作流程如下圖所示:
2. 網絡爬蟲的用途
網絡爬蟲的常用功能
網絡爬蟲的常用功能有:
- 搜尋引擎
- 爬取圖檔
- 爬取網站使用者公開的資訊進行分析
- 爬取金融資料進行投資分析
- 爬取多站新聞集中閱讀
- 自動去網頁廣告
- 爬取使用者公開的聯系方式,進行營銷
爬蟲的出現,可以在一定程度上代替手工通路網頁,使人工通路網際網路的操作自動化,以更高效地利用好網際網路中的有價值資訊。
搜尋引擎核心
搜尋引擎核心工作流程如下圖所示:
使用者爬蟲
使用者爬蟲即專門用來爬取網際網路中使用者資料(價值比較高)的一種爬蟲。
3. 網絡爬蟲實作原理與技術
網絡爬蟲實作原理
1 通用網絡爬蟲
通用網絡爬蟲的實作原理及過程如下圖所示:
2 聚焦網絡爬蟲
聚焦網絡爬蟲,由于其需要有目的地進行爬取,是以相對于通用網絡爬蟲,增加了目标定義和過濾機制,也就是說,其執行原理和執行過程需要比通用網絡爬蟲多出三步,即目标的定義、無關連結的過濾和下一步要爬取URL位址的選取等,如下圖所示:
爬行政策
爬行政策主要有深度優先、廣度優先、大站優先、反鍊政策等。
如下圖所示,假設有一個網站,ABCDEFG分别為站點下的網頁,圖中箭頭表示網頁的層次結構。
如果按照深度優先爬行政策,則首先會爬取上層的一個網頁,然後将此網頁的下層連結依次深入爬取完再傳回上一層進行爬取。 是以,若按照深度優先爬行政策,上圖網頁的爬行順序可以是:A -> D -> E -> B -> C -> F -> G
如果按照廣度優先爬行政策,則首先會爬取同一層次的網頁,将同一層次的網頁全部爬取完成後,再選擇下一個層次的網頁去爬行。是以,若按照廣度優先爬行政策,上圖網頁的爬行順序可以是:A -> B -> C -> D -> E -> F -> G
所謂大站就是網頁數量多的網站。大站優先爬取政策,就是優先爬取大站中網頁URL的政策。
一個網頁的反向連結數,指的是該網頁被其他網頁指向的次數,這反映了該網頁被其他網頁引用(推薦)的次數。是以,如果按照反鍊政策爬行的話,将優先爬行受歡迎(當然不一定真實)的網頁。
除了上述爬行政策,實際中還有很多其他爬行政策,如OPIC(線上頁面重要性計算)政策、Partial PageRank(非完全頁面分級)政策
更新政策
顯然,網站的更新頻率與爬蟲通路網站的頻率越接近,效果越好。當爬蟲伺服器資源有限時,爬蟲也需要根據對應政策,讓不同的網頁具有不同的更新優先級,優先級高的網頁更新,将獲得較快的爬取響應。
具體來說,常見的網頁更新政策主要有3種:
- 使用者體驗政策:優先更新排名結果靠前的網頁
- 曆史資料政策:通過蔔瓦松過程進行模組化等手段,預測網頁下一次更新的時間,進而确定下一次對該網頁爬取的時間,即确定更新周期
- 聚類分析政策:使用聚類算法計算具有類似内容網頁的更新頻率(内容類似的頁面也有類似的更新頻率)
網頁分析算法
網頁分析,就是對爬取到原始資料庫中的網頁進行分析以确定網頁重要性,作為使用者檢索排名結果的依據。
搜尋引擎的網頁分析算法主要分為3類:
- 基于使用者行為的網頁分析算法:即依據使用者對這些網頁的通路行為(如通路頻率、時長,點選率)對網頁進行評價
- 基于網絡拓撲的網頁分析算法:即依據網頁的連結關系、結構關系、已知網頁或資料等對網頁進行分析的一種算法。所謂拓撲,即結構關系。可以細分為:基于網頁粒度(如PageRank)的分析算法;基于網頁塊粒度的分析算法;基于網站粒度(SiteRank)的分析算法
- 基于網頁内容的網頁分析算法:即依據網頁的資料、文本等網頁内容特征,對網頁進行相應的評價
身份識别
一般地,爬蟲在對網頁進行爬取通路的時候,會通過HTTP請求中的UserAgent字段告知Web伺服器自己的身份資訊。
一般爬蟲通路一個網站的時候,首先會根據該站點下的Robots.txt檔案來确定可爬取網頁的範圍。Robots協定是需要網絡爬蟲遵守的協定,對于一些禁止的URL位址,網絡爬蟲則不應爬取通路。
網絡爬蟲實作技術
- Python:架構豐富,簡單易學,代碼簡潔,可讀性高
- Java:适合大型爬蟲項目
- PHP:後端處理很強,子產品豐富,但不易開發
- NodeJS:高并發,多線程
- C++:速度快,成本高
- Go:高并發