天天看點

網絡爬蟲理論基礎

網絡爬蟲理論基礎

文章目錄

  • ​​網絡爬蟲理論基礎​​
  • ​​1. 網絡爬蟲的基本概念​​
  • ​​網絡爬蟲初識​​
  • ​​為何要學習爬蟲​​
  • ​​網絡爬蟲的組成​​
  • ​​網絡爬蟲的類型​​
  • ​​重點--聚焦爬蟲​​
  • ​​2. 網絡爬蟲的用途​​
  • ​​網絡爬蟲的常用功能​​
  • ​​搜尋引擎核心​​
  • ​​使用者爬蟲​​
  • ​​3. 網絡爬蟲實作原理與技術​​
  • ​​網絡爬蟲實作原理​​
  • ​​1 通用網絡爬蟲​​
  • ​​2 聚焦網絡爬蟲​​
  • ​​爬行政策​​
  • ​​更新政策​​
  • ​​網頁分析算法​​
  • ​​身份識别​​
  • ​​網絡爬蟲實作技術​​

1. 網絡爬蟲的基本概念

網絡爬蟲初識

網絡爬蟲(Crawler)又稱網絡蜘蛛(Spider),網絡螞蟻(Ant)和網絡機器人(Robot),可以按照事先制定的規則(爬蟲算法)自動地浏覽并擷取網頁資訊的計算機程式。

爬蟲是搜尋引擎的核心元件,這種爬蟲稱為通用爬蟲,目的是盡可能多地爬取網頁。

為何要學習爬蟲

  1. 資料采集,為資料分析提供原材料
  2. 私人定制搜尋引擎
  3. 了解爬蟲原理,更好地進行搜尋引擎優化(SEO)
  4. 就業需求旺,薪酬高

網絡爬蟲的組成

網絡爬蟲由控制節點、爬蟲節點和資源庫構成:

  • 控制節點,配置設定任務,排程協調
  • 爬蟲節點,采集(下載下傳網頁)加工(文本處理),存儲入庫
  • 資源庫,存放采集結果和輔助加工處理的資源倉庫

網絡爬蟲的類型

網絡爬蟲按照實作技術和結構可分為:

  • 通用網絡爬蟲(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:高并發

繼續閱讀