網絡爬蟲產生背景和面臨的問題


網絡爬蟲(又稱為網頁蜘蛛,網絡機器人,在FOFA社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

 


 

產生背景

 

隨着網絡的迅速發展,萬維網成為大量信息的載體,如何有效地提取並利用這些信息成為一個巨大的挑戰。搜索引擎(Search Engine),例如傳統的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個輔助人們檢索信息的工具成為用戶訪問萬維網的入口和指南。但是,這些通用性搜索引擎也存在着一定的局限性,如:

(1)不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通過搜索引擎所返回的結果包含大量用戶不關心的網頁。

(2)通用搜索引擎的目標是盡可能大的網絡覆蓋率,有限的搜索引擎服務器資源與無限的網絡數據資源之間的矛盾將進一步加深。

(3)萬維網數據形式的豐富和網絡技術的不斷發展,圖片、數據庫、音頻、視頻多媒體等不同數據大量出現,通用搜索引擎往往對這些信息含量密集且具有一定結構的數據無能為力,不能很好地發現和獲取。

網絡爬蟲


 

(4)通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出的查詢。

為了解決上述問題,定向抓取相關網頁資源的聚焦爬蟲應運而生。聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。與通用爬蟲(general purpose web crawler)不同,聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢准備數據資源。

聚焦爬蟲工作原理以及關鍵技術概述


 

網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。

聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然后,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。

另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之后的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以后的抓取過程給出反饋和指導。

相對於通用網絡爬蟲,聚焦爬蟲還需要解決三個主要問題:

(1) 對抓取目標的描述或定義;

(2) 對網頁或數據的分析與過濾;

(3) 對URL的搜索策略。

面臨的問題

 

截止到 2007 年底,Internet 上網頁數量超出 160 億個,研究表明接近 30%的頁面是重復的;動態頁面的存在:客戶端、服務器端腳本語言的應用使得指向相同 Web 信息的 URL 數量呈指數級增長。 上述特征使得網絡爬蟲面臨一定的困難,主要體現在 Web 信息的巨大容量使得爬蟲在給定時間內只能下載少量網頁。 Lawrence 和 Giles 的研究表明沒有哪個搜索引擎能夠索引超出 16%的Internet 上 Web 頁面,即使能夠提取全部頁面,也沒有足夠的空間來存儲。

為提高爬行效率,爬蟲需要在單位時間內盡可能多的獲取高質量頁面,是它面臨的難題之一。 當前有五種表示頁面質量高低的方式[1]:Similarity(頁面與爬行主題之間的相似度)、Backlink(頁面在 Web 圖中的入度大小)、PageRank(指向它的所有頁面平均權值之和)、Forwardlink(頁面在 Web 圖中的出度大小)、Location(頁面的信息位置);Parallel(並行性問題)。

 


 

 為了提高爬行速度,網絡通常會采取並行爬行的工作方式,隨之引入了新的問題:重復性(並行運行的爬蟲或爬行線程同時運行時增加了重復頁面)、質量問題(並行運行時,每個爬蟲或爬行線程只能獲取部分頁面,導致頁面質量下降)、通信帶寬代價(並行運行時,各個爬蟲或爬行線程之間不可避免要進行一些通信)。 並行運行時,網絡爬蟲通常采用三種方式:獨立方式(各個爬蟲獨立爬行頁面,互不通信)、動態分配方式(由一個中央協調器動態協調分配 URL 給各個爬蟲)、靜態分配方式(URL 事先划分給各個爬蟲)。

1.1 選擇策略:

就現在網絡資源的大小而言,即使很大的搜索引擎也只能獲取網絡上可得到資源的一小部分。由勞倫斯河蓋爾斯共同做的一項研究指出,沒有一個搜索引擎抓取的內容達到網絡的16%(勞倫斯河蓋爾斯,2001)。網絡爬蟲通常僅僅下載網頁內容的一部分,但是大家都還是強烈要求下載的部分包括最多的相關頁面,而不僅僅是一個隨機的簡單的站點。

這就要求一個公共標准來區分網頁的重要程度,一個頁面的重要程度與他自身的質量有關,與按照鏈接數、訪問數得出的受歡迎程度有關,甚至與他本身的網址(后來出現的把搜索放在一個頂級域名或者一個固定頁面上的垂直搜索)有關。設計一個好的搜索策略還有額外的困難,它必須在不完全信息下工作,因為整個頁面的集合在抓取時是未知的。

Cho等人(Cho et al,1998)做了第一份抓取策略的研究。他們的數據是斯坦福大學網站中的18萬個頁面,使用不同的策略分別模仿抓取。排序的方法使用了廣度優先,后鏈計數,和部分pagerank算法。計算顯示,如果你想要優先下載pagerank高的頁面,那么,部分PageRank策略是比較好的,其次是廣度優先和后鏈計數。並且,這樣的結果僅僅是針對一個站點的。

Najork和Wiener (Najork and Wiener, 2001)采用實際的爬蟲,對3.28億個網頁,采用廣度優先研究。他們發現廣度優先會較早的抓到PageRank高的頁面(但是他們沒有采用其他策略進行研究)。作者給出的解釋是:“最重要的頁面會有很多的主機連接到他們,並且那些鏈接會較早的發現,而不用考慮從哪一個主機開始。”

Abiteboul (Abiteboul 等人, 2003),設計了一種基於OPIC(在線頁面重要指數)的抓取戰略。在OPIC中,每一個頁面都有一個相等的初始權值,並把這些權值平均分給它所指向的頁面。這種算法與Pagerank相似,但是他的速度很快,並且可以一次完成。OPIC的程序首先抓取獲取權值最大的頁面,實驗在10萬個冪指分布的模擬頁面中進行。並且,實驗沒有和其它策略進行比較,也沒有在真正的WEB頁面測試。

Boldi等人(Boldi et al., 2004)的模擬檢索實驗進行在 從.it網絡上取下的4000萬個頁面和從webbase得到的1億個頁面上,測試廣度優先和深度優先,隨機序列和有序序列。比較的基礎是真實頁面pageRank值和計算出來的pageRank值的接近程度。令人驚奇的是,一些計算pageRank很快的頁面(特別明顯的是廣度優先策略和有序序列)僅僅可以達到很小的接近程度。

Baeza-Yates等人(Baeza-Yates et al., 2005) 在從.gr域名和.cl域名子網站上獲取的300萬個頁面上模擬實驗,比較若干個抓取策略。結果顯示OPIC策略和站點隊列長度,都比廣度優先要好;並且如果可行的話,使用之前的爬行抓取結果來指導這次抓取,總是十分有效的。

Daneshpajouh等人(Daneshpajouh et al., 2008)設計了一個用於尋找好種子的社區。它們從來自不同社區的高PageRank頁面開始檢索的方法,迭代次數明顯小於使用隨機種子的檢索。使用這種方式,可以從以前抓取頁面之中找到好的種子,使用這些種子是十分有效的。

1.1.1 限定訪問鏈接

一個爬蟲可能僅僅想找到html頁面的種子而避免其他的文件類型。為了僅僅得到html的資源,一個爬蟲可以首先做一個http head的請求,以在使用request方法獲取所有的資源之前,決定這個網絡文件的類型。為了避免要發送過多的head請求,爬蟲可以交替的檢查url並且僅僅對以html,htm和反斜杠結尾的文件發送資源請求。這種策略會導致很多的html資源在無意中錯過,一種相似的策略是將網絡資源的擴展名同已知是html文件類型的一組擴展名(如.html,.htm,.asp,.php,.aspx,反斜杠)進行比較。

一些爬蟲也會限制對任何含有“?”的資源(這些是動態生成的)進行獲取請求,以避免蜘蛛爬行在某一個站點中陷入下載無窮無盡的URL的困境。

1.1.2 路徑檢索

一些爬蟲會盡可能多的嘗試下載一個特定站點的資源。Cothey(Cothey,2004)引入了一種路徑檢索的爬蟲,它會嘗試抓取需要檢索資源的所有URL。例如,給定一個種子地址:它將會嘗試檢索/hamster/menkey/,/hamster/和/ 。Cothey發現路徑檢索對發現獨立資源,或者一些通常爬蟲檢索不到的的連接是非常有效的。

一些路徑檢索的爬蟲也被稱為收割機軟件,因為他們通常用於收割或者收集所有的內容,可能是從特定的頁面或者主機收集相冊的照片。

1.1.3 聚焦抓取

爬蟲所抓取頁面的重要程度也可以表述成它與給定查詢之間相似程度的函數。網絡爬蟲嘗試下載相似頁面,可以稱為聚焦檢索或者主題檢索。關於主題檢索和聚焦檢索的概念,最早是由Menczer(Menczer 1997; Menczer and Belew, 1998)和Chakrabarti等人首先提出來的(Chakrabarti et al., 1999)。

聚焦檢索的主要問題是網頁爬蟲的使用環境,我們希望在實際下載頁面之前,就可以知道給定頁面和查詢之間的相似度。一個可能的方法就是在鏈接之中設置錨點,這就是在早期時候,Pinkerton(Pinkerton,1994)曾經在一個爬蟲中采用的策略。Diligenti等人(Diligenti等人,2000)建議使用已經抓取頁面的內容去推測查詢和未訪問頁的相似度。一個聚焦查詢的表現的好壞主要依賴於查詢主題內容的豐富程度,通常還會依賴頁面查詢引擎提供的查詢起點。

1.1.4 抓取深層的網頁

很多的頁面隱藏的很深或隱藏在在看不到的網絡之中。這些頁面通常只有在向數據庫提交查詢的時候才可以訪問到,如果沒有鏈接指向他們的話,一般的爬蟲是不能訪問到這些頁面的。谷歌站點地圖協議和mod oai(Nelson等人,2005)嘗試允許發現這些深層次的資源。

深層頁面抓取器增加了抓取網頁的鏈接數。一些爬蟲僅僅抓取形如超文本所包含的內容,標簽和文本。

1.1.5 WEB3.0檢索

Web3.0為下一代搜索技術定義了更先進的技術和新的准則,可以概括為語義網絡和網站模板解析的概念。第三代檢索技術將建立在人機巧妙的聯系的基礎上。

1.2重新訪問策略

網絡具有動態性很強的特性。抓取網絡上的一小部分內容可能會花費真的很長的時間,通常用周或者月來衡量。當爬蟲完成它的抓取的任務以后,很多操作是可能會發生的,這些操作包括新建,更新和刪除。

搜索引擎的角度來看,不檢測這些事件是有成本的,成本就是我們僅僅擁有一份過時的資源。最常使用的成本函數,是新鮮度和過時性(2000年,Cho 和Garcia-Molina)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM