什麼是網路爬蟲程式[轉]?

lastwinner發表於2008-01-25

一、爬蟲技術研究綜述
  引言?
  隨著網路的迅速發展,全球資訊網成為大量資訊的載體,如何有效地提取並利用這些資訊成為一個巨大的挑戰。搜尋引擎(Search Engine),例如傳統的通用搜尋引擎AltaVista,Yahoo!和Google等,作為一個輔助人們檢索資訊的工具成為使用者訪問全球資訊網的入口和指南。但是,這些通用性搜尋引擎也存在著一定的侷限性,如:?

  (1) 不同領域、不同背景的使用者往往具有不同的檢索目的和需求,通用搜尋引擎所返回的結果包含大量使用者不關心的網頁。?
  (2) 通用搜尋引擎的目標是儘可能大的網路覆蓋率,有限的搜尋引擎伺服器資源與無限的網路資料資源之間的矛盾將進一步加深。?
  (3) 全球資訊網資料形式的豐富和網路技術的不斷髮展,圖片、資料庫、音訊/影片多媒體等不同資料大量出現,通用搜尋引擎往往對這些資訊含量密集且具有一定結構的資料無能為力,不能很好地發現和獲取。?
  (4) 通用搜尋引擎大多提供基於關鍵字的檢索,難以支援根據語義資訊提出的查詢。?
  為了解決上述問題,定向抓取相關網頁資源的聚焦爬蟲應運而生。聚焦爬蟲是一個自動下載網頁的程式,它根據既定的抓取目標,有選擇的訪問全球資訊網上的網頁與相關的連結,獲取所需要的資訊。與通用爬蟲(general?purpose web crawler)不同,聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的使用者查詢準備資料資源。?

  1 聚焦爬蟲工作原理及關鍵技術概述?
  網路爬蟲是一個自動提取網頁的程式,它為搜尋引擎從全球資訊網上下載網頁,是搜尋引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入佇列,直到滿足系統的一定停止條件,如圖1(a)流程圖所示。聚焦爬蟲的工作流程較為複雜,需要根據一定的網頁分析演算法過濾與主題無關的連結,保留有用的連結並將其放入等待抓取的URL佇列。然後,它將根據一定的搜尋策略從佇列中選擇下一步要抓取的網頁URL,並重覆上述過程,直到達到系統的某一條件時停止,如圖1(b)所示。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。?

  相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:?
  (1) 對抓取目標的描述或定義;?
  (2) 對網頁或資料的分析與過濾;?
  (3) 對URL的搜尋策略。?
  抓取目標的描述和定義是決定網頁分析演算法與URL搜尋策略如何制訂的基礎。而網頁分析演算法和候選URL排序演算法是決定搜尋引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。這兩個部分的演算法又是緊密相關的。?

  2 抓取目標描述?
  現有聚焦爬蟲對抓取目標的描述可分為基於目標網頁特徵、基於目標資料模式和基於領域概念3種。?
基於目標網頁特徵的爬蟲所抓取、儲存並索引的物件一般為網站或網頁。根據種子樣本獲取方式可分為:?
  (1) 預先給定的初始抓取種子樣本;?
  (2) 預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等;?
  (3) 透過使用者行為確定的抓取目標樣例,分為:?
      a) 使用者瀏覽過程中顯示標註的抓取樣本;?
      b) 透過使用者日誌挖掘得到訪問模式及相關樣本。?
  其中,網頁特徵可以是網頁的內容特徵,也可以是網頁的連結結構特徵,等等。?
  現有的聚焦爬蟲對抓取目標的描述或定義可以分為基於目標網頁特徵,基於目標資料模式和基於領域概念三種。?
基於目標網頁特徵的爬蟲所抓取、儲存並索引的物件一般為網站或網頁。具體的方法根據種子樣本的獲取方式可以分為:      

(1)預先給定的初始抓取種子樣本;
(2)預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等;
(3)透過使用者行為確定的抓取目標樣例。其中,網頁特徵可以是網頁的內容特徵,也可以是網頁的連結結構特徵,等等。二、爬蟲技術研究綜述
基於目標資料模式的爬蟲針對的是網頁上的資料,所抓取的資料一般要符合一定的模式,或者可以轉化或對映為目標資料模式。?

另一種描述方式是建立目標領域的本體或詞典,用於從語義角度分析不同特徵在某一主題中的重要程度。?

三、網頁搜尋策略?
網頁的抓取策略可以分為深度優先、廣度優先和最佳優先三種。深度優先在很多情況下會導致爬蟲的陷入(trapped)問題,目前常見的是廣度優先和最佳優先方法。?
3.1 廣度優先搜尋策略?
廣度優先搜尋策略是指在抓取過程中,在完成當前層次的搜尋後,才進行下一層次的搜尋。該演算法的設計和實現相對簡單。在目前為覆蓋儘可能多的網頁,一般使用廣度優先搜尋方法。也有很多研究將廣度優先搜尋策略應用於聚焦爬蟲中。其基本思想是認為與初始URL在一定連結距離內的網頁具有主題相關性的機率很大。另外一種方法是將廣度優先搜尋與網頁過濾技術結合使用,先用廣度優先策略抓取網頁,再將其中無關的網頁過濾掉。這些方法的缺點在於,隨著抓取網頁的增多,大量的無關網頁將被下載並過濾,演算法的效率將變低。?

3.2 最佳優先搜尋策略?
最佳優先搜尋策略按照一定的網頁分析演算法,預測候選URL與目標網頁的相似度,或與主題的相關性,並選取評價最好的一個或幾個URL進行抓取。它只訪問經過網頁分析演算法預測為“有用”的網頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優先策略是一種區域性最優搜尋演算法。因此需要將最佳優先結合具體的應用進行改進,以跳出區域性最優點。將在第4節中結合網頁分析演算法作具體的討論。研究表明,這樣的閉環調整可以將無關網頁數量降低30%~90%。?

四、網頁分析演算法?

網頁分析演算法可以歸納為基於網路拓撲、基於網頁內容和基於使用者訪問行為三種型別。?
4.1 基於網路拓撲的分析演算法?
基於網頁之間的連結,透過已知的網頁或資料,來對與其有直接或間接連結關係的物件(可以是網頁或網站等)作出評價的演算法。又分為網頁粒度、網站粒度和網頁塊粒度這三種。?
4.1.1 網頁(Webpage)粒度的分析演算法?
PageRank和HITS演算法是最常見的連結分析演算法,兩者都是透過對網頁間連結度的遞迴和規範化計算,得到每個網頁的重要度評價。PageRank演算法雖然考慮了使用者訪問行為的隨機性和Sink網頁的存在,但忽略了絕大多數使用者訪問時帶有目的性,即網頁和連結與查詢主題的相關性。針對這個問題,HITS演算法提出了兩個關鍵的概念:權威型網頁(authority)和中心型網頁(hub)。?

基於連結的抓取的問題是相關頁面主題團之間的隧道現象,即很多在抓取路徑上偏離主題的網頁也指向目標網頁,區域性評價策略中斷了在當前路徑上的抓取行為。文獻[21]提出了一種基於反向連結(BackLink)的分層式上下文模型(Context Model),用於描述指向目標網頁一定物理跳數半徑內的網頁拓撲圖的中心Layer0為目標網頁,將網頁依據指向目標網頁的物理跳數進行層次劃分,從外層網頁指向內層網頁的連結稱為反向連結。?

4.1.2 網站粒度的分析演算法?
網站粒度的資源發現和管理策略也比網頁粒度的更簡單有效。網站粒度的爬蟲抓取的關鍵之處在於站點的劃分和站點等級(SiteRank)的計算。SiteRank的計算方法與PageRank類似,但是需要對網站之間的連結作一定程度抽象,並在一定的模型下計算連結的權重。?
網站劃分情況分為按域名劃分和按IP地址劃分兩種。文獻[18]討論了在分散式情況下,透過對同一個域名下不同主機、伺服器的IP地址進行站點劃分,構造站點圖,利用類似PageRank的方法評價SiteRank。同時,根據不同檔案在各個站點上的分佈情況,構造文件圖,結合SiteRank分散式計算得到DocRank。文獻[18]證明,利用分散式的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等各種網路資源形式也日益豐富。因此,基於網頁內容的分析演算法也從原來的較為單純的文字檢索方法,發展為涵蓋網頁資料抽取、機器學習、資料探勘、語義理解等多種方法的綜合應用。本節根據網頁資料形式的不同,將基於網頁內容的分析演算法,歸納以下三類:第一種針對以文字和超連結為主的無結構或結構很簡單的網頁;第二種針對從結構化的資料來源(如RDBMS)動態生成的頁面,其資料不能直接批次訪問;第三種針對的資料界於第一和第二類資料之間,具有較好的結構,顯示遵循一定模式或風格,且可以直接訪問。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-160091/,如需轉載,請註明出處,否則將追究法律責任。

相關文章