1. 程式人生 > >SEO 爬蟲原理介紹

SEO 爬蟲原理介紹

部分 三種 常見 系統 好的 eve 爬蟲 格式 分布式

一篇關於網絡爬蟲程序的一些原理及體系結構純技術文章,一些地方可能不會看的非常明確。對於SEO行業,常常和搜索引擎及其爬蟲程序打交道,細致瀏覽下,一些不清楚而自己又非常想了解的地方,能夠借助搜索來需找相關解釋,對工作還是有幫助的(個人覺得值得註意的地方已加紅顯示)。

文章相對較長。我分兩次公布,能夠轉換成PDF格式文檔閱讀(太懶的童鞋能夠在下篇文章結尾自行下載)。
  網絡爬蟲工作原理
  1、聚焦爬蟲工作原理及關鍵技術概述
  網絡爬蟲是一個自己主動提取網頁的程序。它為搜索引擎從Internet網上下載網頁。是搜索引擎的重要組成。傳統爬蟲從一個或若幹初始網頁的URL開始,獲得初始網頁上的URL。在抓取網頁的過程中。不斷從當前頁面上抽取新的URL放入隊列。直到滿足系統的一定停止條件。

聚焦爬蟲的工作流程較為復雜,須要依據一定的網頁分析算法過濾與主題無關的鏈接,保留實用的鏈接並將其放入等待抓取的URL隊列。

然後,它將依據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並反復上述過程,直到達到系統的某一條件時停止,另外。全部被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索。對於聚焦爬蟲來說。這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
  相對於通用網絡爬蟲,聚焦爬蟲還須要解決三個主要問題:
  對抓取目標的描寫敘述或定義。
  對網頁或數據的分析與過濾;
  對URL的搜索策略。
  抓取目標的描寫敘述和定義是決定網頁分析算法與URL搜索策略怎樣制訂的基礎。而網頁分析算法和候選URL排序算法是決定搜索引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。

這兩個部分的算法又是緊密相關的。


  2、抓取目標描寫敘述
  現有聚焦爬蟲對抓取目標的描寫敘述可分為基於目標網頁特征、基於目標數據模式和基於領域概念3種。
  基於目標網頁特征的爬蟲所抓取、存儲並索引的對象一般為站點或網頁。依據種子樣本獲取方式可分為:
  預先給定的初始抓取種子樣本;
  預先給定的網頁分類文件夾和與分類文件夾相應的種子樣本,如Yahoo!分類結構等。
  通過用戶行為確定的抓取目標例子。分為:用戶瀏覽過程中顯示標註的抓取樣本;通過用戶日誌挖掘得到訪問模式及相關樣本。
  當中,網頁特征能夠是網頁的內容特征,也能夠是網頁的鏈接結構特征,等等。
  基於目標數據模式的爬蟲針對的是網頁上的數據。所抓取的數據一般要符合一定的模式,或者能夠轉化或映射為目標數據模式。


  還有一種描寫敘述方式是建立目標領域的本體或詞典,用於從語義角度分析不同特征在某一主題中的重要程度。
  3、網頁搜索策略
  網頁的抓取策略能夠分為深度優先、廣度優先和最佳優先三種。深度優先在非常多情況下會導致爬蟲的陷入(trapped)問題,眼下常見的是廣度優先和最佳優先方法。
  3.1
廣度優先搜索策略
  廣度優先搜索策略是指在抓取過程中。在完畢當前層次的搜索後,才進行下一層次的搜索。該算法的設計和實現相對簡單。在眼下為覆蓋盡可能多的網頁。
一般使用廣度優先搜索方法。也有非常多研究將廣度優先搜索策略應用於聚焦爬蟲中。其基本思想是覺得與初始URL在一定鏈接距離內的網頁具有主題相關性的概率非常大。第二種方法是將廣度優先搜索與網頁過濾技術結合使用。先用廣度優先策略抓取網頁,再將當中無關的網頁過濾掉。這些方法的缺點在於,隨著抓取網頁的增多,大量的無關網頁將被下載並過濾,算法的效率將變低。


  3.2
最佳優先搜索策略
  最佳優先搜索策略依照一定的網頁分析算法,預測候選URL與目標網頁的相似度,或與主題的相關性。並選取評價最好的一個或幾個URL進行抓取。

它僅僅訪問經過網頁分析算法預測為“實用”的網頁。存在的一個問題是,在爬蟲抓取路徑上的非常多相關網頁可能被忽略,由於最佳優先策略是一種局部最優搜索算法。
因此須要將最佳優先結合詳細的應用進行改進,以跳出局部最長處。將在第4節中結合網頁分析算法作詳細的討論。研究表明,這種閉環調整能夠將無關網頁數量減少30%~90%。
  4、網頁分析算法
  網頁分析算法能夠歸納為基於網絡拓撲、基於網頁內容和基於用戶訪問行為三種類型。


  4.1
基於網絡拓撲的分析算法
  基於網頁之間的鏈接。通過已知的網頁或數據,來對與其有直接或間接鏈接關系的對象(能夠是網頁或站點等)作出評價的算法。又分為網頁粒度、站點粒度和網頁塊粒度這三種。


  4.1.1
網頁粒度的分析算法
  PageRank和HITS算法是最常見的鏈接分析算法,兩者都是通過對網頁間鏈接度的遞歸和規範化計算,得到每一個網頁的重要度評價。
PageRank算法盡管考慮了用戶訪問行為的隨機性和Sink網頁的存在。但忽略了絕大多數用戶訪問時帶有目的性。即網頁和鏈接與查詢主題的相關性。針
對這個問題,HITS算法提出了兩個關鍵的概念:權威型網頁(authority)和中心型網頁(hub)。
  基於鏈接的抓取的問題是相關頁面主題團之間的隧道現象。即非常多在抓取路徑上偏離主題的網頁也指向目標網頁,局部評價策略中斷了在當前路徑上的抓取行為。部分文獻提出了一種基於反向鏈接(BackLink)的分層式上下文模型(Context
Model)。用於描寫敘述指向目標網頁一定物理跳數半徑內的網頁拓撲圖的中心Layer0為目標網頁。將網頁根據指向目標網頁的物理跳數進行層次劃分。從外層網頁指向內層網頁的鏈接稱為反向鏈接。
  4.1.2
站點粒度的分析算法
  站點粒度的資源發現和管理策略也比網頁粒度的更簡單有效。

站點粒度的爬蟲抓取的關鍵之處在於站點的劃分和站點等級(SiteRank)的計算,SiteRank的計算方法與PageRank類似。可是須要對站點之間的鏈接作一定程度抽象,並在一定的模型下計算鏈接的權重。
  站點劃分情況分為按域名劃分和按IP地址劃分兩種。一些文獻討論了在分布式情況下,通過對同一個域名下不同主機、server的IP地址進行站
點劃分。構造網站圖,利用類似PageRank的方法評價SiteRank。

同一時候。依據不同文件在各個網站上的分布情況。構造文檔圖,結合
SiteRank分布式計算得到DocRank。利用分布式的SiteRank計算。不僅大大減少了單機網站的算法代價。並且克服了單獨網站對整個網絡覆蓋率有限的缺點。附帶的一個長處是。常見PageRank
造假難以對SiteRank進行欺騙。
  4.1.3
網頁塊粒度的分析算法
  在一個頁面中,往往含有多個指向其它頁面的鏈接。這些鏈接中僅僅有一部分是指向主題相關網頁的,或依據網頁的鏈接錨文本表明其具有較高重要性。可是,在PageRank和HITS算法中。沒有對這些鏈接作區分。因此經常給網頁分析帶來廣告等噪聲鏈接的幹擾。在網頁塊級別(Block
level) 進行鏈接分析的算法的基本思想是通過VIPS網頁切割算法將網頁分為不同的網頁塊(page block),然後對這些網頁塊建立page to
block和block to page的鏈接矩陣, 分別記為Z和X。於是,在 page to page圖上的網頁塊級別的PageRank為 W(p)=X×Z。
在block to block圖上的BlockRank為 W(b)=Z×X。
已經有人實現了塊級別的PageRank和HITS算法,並通過實驗證明,效率和準確率都比傳統的相應算法要好。
  4.2
基於網頁內容的網頁分析算法
  基於網頁內容的分析算法指的是利用網頁內容(文本、數據等資源)特征進行的網頁評價。網頁的內容從原來的以超文本為主,發展到後來動態頁面(或稱
為Hidden Web)數據為主。後者的數據量約為直接可見頁面數據(PIW,Publicly Indexable
Web)的400~500倍。還有一方面。多媒體數據、Web
Service等各種網絡資源形式也日益豐富。

因此。基於網頁內容的分析算法也從原來的較為單純的文本檢索方法。發展為涵蓋網頁數據抽取、機器學習、數據挖掘、語義理解等多種方法的綜合應用。本節依據網頁數據形式的不同。將基於網頁內容的分析算法,歸納下面三類:
  針對以文本和超鏈接為主的無結構或結構非常easy的網頁;
  針對從結構化的數據源(如RDBMS)動態生成的頁面。其數據不能直接批量訪問;
  針對的數據界於第一和第二類數據之間,具有較好的結構。顯示遵循一定模式或風格,且能夠直接訪問。

SEO 爬蟲原理介紹