尤物视频在线观看|国产尤物视频在线观看|99热在线获取最新地址,久久频这里精品99香蕉久,国产色婷婷精品综合在线,亚洲欧美日韩高清在线看

網(wǎng)絡(luò)爬蟲(chóng)

作者:聚擎 瀏覽:1423 發(fā)布時(shí)間:2017-04-23
編輯 分享 評(píng)論 2

產(chǎn)生背景

隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。搜索引擎(Search Engine),例如傳統(tǒng)的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個(gè)輔助人們檢索信息的工具成為用戶(hù)訪(fǎng)問(wèn)萬(wàn)維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性,如:

(1)不同領(lǐng)域、不同背景的用戶(hù)往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶(hù)不關(guān)心的網(wǎng)頁(yè)。

(2)通用搜索引擎的目標(biāo)是盡可能大的網(wǎng)絡(luò)覆蓋率,有限的搜索引擎服務(wù)器資源與無(wú)限的網(wǎng)絡(luò)數(shù)據(jù)資源之間的矛盾將進(jìn)一步加深。

(3)萬(wàn)維網(wǎng)數(shù)據(jù)形式的豐富和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,圖片、數(shù)據(jù)庫(kù)、音頻、視頻多媒體等不同數(shù)據(jù)大量出現(xiàn),通用搜索引擎往往對(duì)這些信息含量密集且具有一定結(jié)構(gòu)的數(shù)據(jù)無(wú)能為力,不能很好地發(fā)現(xiàn)和獲取。

(4)通用搜索引擎大多提供基于關(guān)鍵字的檢索,難以支持根據(jù)語(yǔ)義信息提出的查詢(xún)。

網(wǎng)絡(luò)爬蟲(chóng)網(wǎng)絡(luò)爬蟲(chóng)

為了解決上述問(wèn)題,定向抓取相關(guān)網(wǎng)頁(yè)資源的聚焦爬蟲(chóng)應(yīng)運(yùn)而生。聚焦爬蟲(chóng)是一個(gè)自動(dòng)下載網(wǎng)頁(yè)的程序,它根據(jù)既定的抓取目標(biāo),有選擇的訪(fǎng)問(wèn)萬(wàn)維網(wǎng)上的網(wǎng)頁(yè)與相關(guān)的鏈接,獲取所需要的信息。與通用爬蟲(chóng)(general purpose web crawler)不同,聚焦爬蟲(chóng)并不追求大的覆蓋,而將目標(biāo)定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁(yè),為面向主題的用戶(hù)查詢(xún)準(zhǔn)備數(shù)據(jù)資源。

1 聚焦爬蟲(chóng)工作原理以及關(guān)鍵技術(shù)概述

網(wǎng)絡(luò)爬蟲(chóng)是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從萬(wàn)維網(wǎng)上下載網(wǎng)頁(yè),是搜索引擎的重要組成。傳統(tǒng)爬蟲(chóng)從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿(mǎn)足系統(tǒng)的一定停止條件。聚焦爬蟲(chóng)的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢(xún)和檢索;對(duì)于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。

相對(duì)于通用網(wǎng)絡(luò)爬蟲(chóng),聚焦爬蟲(chóng)還需要解決三個(gè)主要問(wèn)題:

(1) 對(duì)抓取目標(biāo)的描述或定義;

(2) 對(duì)網(wǎng)頁(yè)或數(shù)據(jù)的分析與過(guò)濾;

(3) 對(duì)URL的搜索策略。

面臨的問(wèn)題

截止到 2007 年底,Internet 上網(wǎng)頁(yè)數(shù)量超出 160 億個(gè),研究表明接近 30%的頁(yè)面是重復(fù)的;動(dòng)態(tài)頁(yè)面的存在:客戶(hù)端、服務(wù)器端腳本語(yǔ)言的應(yīng)用使得指向相同 Web 信息的 URL 數(shù)量呈指數(shù)級(jí)增長(zhǎng)。 上述特征使得網(wǎng)絡(luò)爬蟲(chóng)面臨一定的困難,主要體現(xiàn)在 Web 信息的巨大容量使得爬蟲(chóng)在給定時(shí)間內(nèi)只能下載少量網(wǎng)頁(yè)。 Lawrence 和 Giles 的研究表明沒(méi)有哪個(gè)搜索引擎能夠索引超出 16%的Internet 上 Web 頁(yè)面,即使能夠提取全部頁(yè)面,也沒(méi)有足夠的空間來(lái)存儲(chǔ)[1] 

為提高爬行效率,爬蟲(chóng)需要在單位時(shí)間內(nèi)盡可能多的獲取高質(zhì)量頁(yè)面,是它面臨的難題之一。 當(dāng)前有五種表示頁(yè)面質(zhì)量高低的方式[1]:Similarity(頁(yè)面與爬行主題之間的相似度)、Backlink(頁(yè)面在 Web 圖中的入度大小)、PageRank(指向它的所有頁(yè)面平均權(quán)值之和)、Forwardlink(頁(yè)面在 Web 圖中的出度大?。ocation(頁(yè)面的信息位置);Parallel(并行性問(wèn)題)[3]。 為了提高爬行速度,網(wǎng)絡(luò)通常會(huì)采取并行爬行的工作方式,隨之引入了新的問(wèn)題:重復(fù)性(并行運(yùn)行的爬蟲(chóng)或爬行線(xiàn)程同時(shí)運(yùn)行時(shí)增加了重復(fù)頁(yè)面)、質(zhì)量問(wèn)題(并行運(yùn)行時(shí),每個(gè)爬蟲(chóng)或爬行線(xiàn)程只能獲取部分頁(yè)面,導(dǎo)致頁(yè)面質(zhì)量下降)、通信帶寬代價(jià)(并行運(yùn)行時(shí),各個(gè)爬蟲(chóng)或爬行線(xiàn)程之間不可避免要進(jìn)行一些通信)。 并行運(yùn)行時(shí),網(wǎng)絡(luò)爬蟲(chóng)通常采用三種方式:獨(dú)立方式(各個(gè)爬蟲(chóng)獨(dú)立爬行頁(yè)面,互不通信)、動(dòng)態(tài)分配方式(由一個(gè)中央?yún)f(xié)調(diào)器動(dòng)態(tài)協(xié)調(diào)分配 URL 給各個(gè)爬蟲(chóng))、靜態(tài)分配方式(URL 事先劃分給各個(gè)爬蟲(chóng))[1] 。

分類(lèi)

編輯

網(wǎng)絡(luò)爬蟲(chóng)按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分為以下幾種類(lèi)型:通用網(wǎng)絡(luò)爬蟲(chóng)(General Purpose Web Crawler)、聚焦網(wǎng)絡(luò)爬蟲(chóng)(Focused Web Crawler)、增量式網(wǎng)絡(luò)爬蟲(chóng)(Incremental Web Crawler)、深層網(wǎng)絡(luò)爬蟲(chóng)(Deep Web Crawler)。 實(shí)際的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)通常是幾種爬蟲(chóng)技術(shù)相結(jié)合實(shí)現(xiàn)的[1] 

通用網(wǎng)絡(luò)爬蟲(chóng)

通用網(wǎng)絡(luò)爬蟲(chóng)又稱(chēng)全網(wǎng)爬蟲(chóng)(Scalable Web Crawler),爬行對(duì)象從一些種子 URL 擴(kuò)充到整個(gè) Web,主要為門(mén)戶(hù)站點(diǎn)搜索引擎和大型 Web 服務(wù)提供商采集數(shù)據(jù)。 由于商業(yè)原因,它們的技術(shù)細(xì)節(jié)很少公布出來(lái)。 這類(lèi)網(wǎng)絡(luò)爬蟲(chóng)的爬行范圍和數(shù)量巨大,對(duì)于爬行速度和存儲(chǔ)空間要求較高,對(duì)于爬行頁(yè)面的順序要求相對(duì)較低,同時(shí)由于待刷新的頁(yè)面太多,通常采用并行工作方式,但需要較長(zhǎng)時(shí)間才能刷新一次頁(yè)面。 雖然存在一定缺陷,通用網(wǎng)絡(luò)爬蟲(chóng)適用于為搜索引擎搜索廣泛的主題,有較強(qiáng)的應(yīng)用價(jià)值[1] 。

通用網(wǎng)絡(luò)爬蟲(chóng)的結(jié)構(gòu)大致可以分為頁(yè)面爬行模塊 、頁(yè)面分析模塊、鏈接過(guò)濾模塊、頁(yè)面數(shù)據(jù)庫(kù)、URL 隊(duì)列、初始 URL 集合幾個(gè)部分。為提高工作效率,通用網(wǎng)絡(luò)爬蟲(chóng)會(huì)采取一定的爬行策略。 常用的爬行策略有:深度優(yōu)先策略、廣度優(yōu)先策略[1] 。

1) 深度優(yōu)先策略:其基本方法是按照深度由低到高的順序,依次訪(fǎng)問(wèn)下一級(jí)網(wǎng)頁(yè)鏈接,直到不能再深入為止。 爬蟲(chóng)在完成一個(gè)爬行分支后返回到上一鏈接節(jié)點(diǎn)進(jìn)一步搜索其它鏈接。 當(dāng)所有鏈接遍歷完后,爬行任務(wù)結(jié)束。 這種策略比較適合垂直搜索或站內(nèi)搜索, 但爬行頁(yè)面內(nèi)容層次較深的站點(diǎn)時(shí)會(huì)造成資源的巨大浪費(fèi)[1] 

2) 廣度優(yōu)先策略:此策略按照網(wǎng)頁(yè)內(nèi)容目錄層次深淺來(lái)爬行頁(yè)面,處于較淺目錄層次的頁(yè)面首先被爬行。 當(dāng)同一層次中的頁(yè)面爬行完畢后,爬蟲(chóng)再深入下一層繼續(xù)爬行。 這種策略能夠有效控制頁(yè)面的爬行深度,避免遇到一個(gè)無(wú)窮深層分支時(shí)無(wú)法結(jié)束爬行的問(wèn)題,實(shí)現(xiàn)方便,無(wú)需存儲(chǔ)大量中間節(jié)點(diǎn),不足之處在于需較長(zhǎng)時(shí)間才能爬行到目錄層次較深的頁(yè)面[1] 。

聚焦網(wǎng)絡(luò)爬蟲(chóng)

聚焦網(wǎng)絡(luò)爬蟲(chóng)(Focused Crawler),又稱(chēng)主題網(wǎng)絡(luò)爬蟲(chóng)(Topical Crawler),是指選擇性地爬行那些與預(yù)先定義好的主題相關(guān)頁(yè)面的網(wǎng)絡(luò)爬蟲(chóng)[8]。 和通用網(wǎng)絡(luò)爬蟲(chóng)相比,聚焦爬蟲(chóng)只需要爬行與主題相關(guān)的頁(yè)面,極大地節(jié)省了硬件和網(wǎng)絡(luò)資源,保存的頁(yè)面也由于數(shù)量少而更新快,還可以很好地滿(mǎn)足一些特定人群對(duì)特定領(lǐng)域信息的需求[1] 。

聚焦網(wǎng)絡(luò)爬蟲(chóng)和通用網(wǎng)絡(luò)爬蟲(chóng)相比,增加了鏈接評(píng)價(jià)模塊以及內(nèi)容評(píng)價(jià)模塊。聚焦爬蟲(chóng)爬行策略實(shí)現(xiàn)的關(guān)鍵是評(píng)價(jià)頁(yè)面內(nèi)容和鏈接的重要性,不同的方法計(jì)算出的重要性不同,由此導(dǎo)致鏈接的訪(fǎng)問(wèn)順序也不同[1] 。

1) 基于內(nèi)容評(píng)價(jià)的爬行策略:DeBra將文本相似度的計(jì)算方法引入到網(wǎng)絡(luò)爬蟲(chóng)中,提出了 Fish Search 算法,它將用戶(hù)輸入的查詢(xún)?cè)~作為主題,包含查詢(xún)?cè)~的頁(yè)面被視為與主題相關(guān),其局限性在于無(wú)法評(píng)價(jià)頁(yè)面與主題相關(guān) 度 的 高 低 。 Herseovic對(duì) Fish Search 算 法 進(jìn) 行 了 改 進(jìn) ,提 出 了 Sharksearch 算法,利用空間向量模型計(jì)算頁(yè)面與主題的相關(guān)度大小[1] 。

2) 基于鏈接結(jié)構(gòu)評(píng)價(jià)的爬行策略 :Web 頁(yè)面作為一種半結(jié)構(gòu)化文檔,包含很多結(jié)構(gòu)信息,可用來(lái)評(píng)價(jià)鏈接重要性。 PageRank 算法最初用于搜索引擎信息檢索中對(duì)查詢(xún)結(jié)果進(jìn)行排序,也可用于評(píng)價(jià)鏈接重要性,具體做法就是每次選擇 PageRank 值較大頁(yè)面中的鏈接來(lái)訪(fǎng)問(wèn)。 另一個(gè)利用 Web結(jié)構(gòu)評(píng)價(jià)鏈接價(jià)值的方法是 HITS 方法,它通過(guò)計(jì)算每個(gè)已訪(fǎng)問(wèn)頁(yè)面的 Authority 權(quán)重和 Hub 權(quán)重,并以此決定鏈接的訪(fǎng)問(wèn)順序[1] 。

3) 基于增強(qiáng)學(xué)習(xí)的爬行策略:Rennie 和 McCallum 將增強(qiáng)學(xué)習(xí)引入聚焦爬蟲(chóng),利用貝葉斯分類(lèi)器,根據(jù)整個(gè)網(wǎng)頁(yè)文本和鏈接文本對(duì)超鏈接進(jìn)行分類(lèi),為每個(gè)鏈接計(jì)算出重要性,從而決定鏈接的訪(fǎng)問(wèn)順序[1] 。

4) 基于語(yǔ)境圖的爬行策略:Diligenti 等人提出了一種通過(guò)建立語(yǔ)境圖(Context Graphs)學(xué)習(xí)網(wǎng)頁(yè)之間的相關(guān)度,訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)系統(tǒng),通過(guò)該系統(tǒng)可計(jì)算當(dāng)前頁(yè)面到相關(guān) Web 頁(yè)面的距離,距離越近的頁(yè)面中的鏈接優(yōu)先訪(fǎng)問(wèn)。印度理工大學(xué)(IIT)和 IBM 研究中心的研究人員開(kāi)發(fā)了一個(gè)典型的聚焦網(wǎng)絡(luò)爬蟲(chóng)。 該爬蟲(chóng)對(duì)主題的定義既不是采用關(guān)鍵詞也不是加權(quán)矢量,而是一組具有相同主題的網(wǎng)頁(yè)。 它包含兩個(gè)重要模塊:一個(gè)是分類(lèi)器,用來(lái)計(jì)算所爬行的頁(yè)面與主題的相關(guān)度,確定是否與主題相關(guān);另一個(gè)是凈化器,用來(lái)識(shí)別通過(guò)較少鏈接連接到大量相關(guān)頁(yè)面的中心頁(yè)面[1] 。

增量式網(wǎng)絡(luò)爬蟲(chóng)

增量式網(wǎng)絡(luò)爬蟲(chóng)(Incremental Web Crawler)是 指 對(duì) 已 下 載 網(wǎng) 頁(yè) 采 取 增 量式更新和只爬行新產(chǎn)生的或者已經(jīng)發(fā)生變化網(wǎng)頁(yè)的爬蟲(chóng),它能夠在一定程度上保證所爬行的頁(yè)面是盡可能新的頁(yè)面。 和周期性爬行和刷新頁(yè)面的網(wǎng)絡(luò)爬蟲(chóng)相比,增量式爬蟲(chóng)只會(huì)在需要的時(shí)候爬行新產(chǎn)生或發(fā)生更新的頁(yè)面 ,并不重新下載沒(méi)有發(fā)生變化的頁(yè)面,可有效減少數(shù)據(jù)下載量,及時(shí)更新已爬行的網(wǎng)頁(yè),減小時(shí)間和空間上的耗費(fèi),但是增加了爬行算法的復(fù)雜度和實(shí)現(xiàn)難度。增量式網(wǎng)絡(luò)爬蟲(chóng)的體系結(jié)構(gòu)[包含爬行模塊、排序模塊、更新模塊、本地頁(yè)面集、待爬行 URL 集以及本地頁(yè)面URL 集[1] 。

增量式爬蟲(chóng)有兩個(gè)目標(biāo):保持本地頁(yè)面集中存儲(chǔ)的頁(yè)面為最新頁(yè)面和提高本地頁(yè)面集中頁(yè)面的質(zhì)量。 為實(shí)現(xiàn)第一個(gè)目標(biāo),增量式爬蟲(chóng)需要通過(guò)重新訪(fǎng)問(wèn)網(wǎng)頁(yè)來(lái)更新本地頁(yè)面集中頁(yè)面內(nèi)容,常用的方法有:1) 統(tǒng)一更新法:爬蟲(chóng)以相同的頻率訪(fǎng)問(wèn)所有網(wǎng)頁(yè),不考慮網(wǎng)頁(yè)的改變頻率;2) 個(gè)體更新法:爬蟲(chóng)根據(jù)個(gè)體網(wǎng)頁(yè)的改變頻率來(lái)重新訪(fǎng)問(wèn)各頁(yè)面;3) 基于分類(lèi)的更新法:爬蟲(chóng)根據(jù)網(wǎng)頁(yè)改變頻率將其分為更新較快網(wǎng)頁(yè)子集和更新較慢網(wǎng)頁(yè)子集兩類(lèi),然后以不同的頻率訪(fǎng)問(wèn)這兩類(lèi)網(wǎng)頁(yè)[1] 。

為實(shí)現(xiàn)第二個(gè)目標(biāo),增量式爬蟲(chóng)需要對(duì)網(wǎng)頁(yè)的重要性排序,常用的策略有:廣度優(yōu)先策略、PageRank 優(yōu)先策略等。IBM 開(kāi)發(fā)的 WebFountain是一個(gè)功能強(qiáng)大的增量式網(wǎng)絡(luò)爬蟲(chóng),它采用一個(gè)優(yōu)化模型控制爬行過(guò)程,并沒(méi)有對(duì)頁(yè)面變化過(guò)程做任何統(tǒng)計(jì)假設(shè),而是采用一種自適應(yīng)的方法根據(jù)先前爬行周期里爬行結(jié)果和網(wǎng)頁(yè)實(shí)際變化速度對(duì)頁(yè)面更新頻率進(jìn)行調(diào)整。北京大學(xué)的天網(wǎng)增量爬行系統(tǒng)旨在爬行國(guó)內(nèi) Web,將網(wǎng)頁(yè)分為變化網(wǎng)頁(yè)和新網(wǎng)頁(yè)兩類(lèi),分別采用不同爬行策略。 為緩解對(duì)大量網(wǎng)頁(yè)變化歷史維護(hù)導(dǎo)致的性能瓶頸,它根據(jù)網(wǎng)頁(yè)變化時(shí)間局部性規(guī)律,在短時(shí)期內(nèi)直接爬行多次變化的網(wǎng)頁(yè) ,為盡快獲取新網(wǎng)頁(yè),它利用索引型網(wǎng)頁(yè)跟蹤新出現(xiàn)網(wǎng)頁(yè)[1] 。

Deep Web 爬蟲(chóng)

Web 頁(yè)面按存在方式可以分為表層網(wǎng)頁(yè)(Surface Web)和深層網(wǎng)頁(yè)(Deep Web,也稱(chēng) Invisible Web Pages 或 Hidden Web)。 表層網(wǎng)頁(yè)是指?jìng)鹘y(tǒng)搜索引擎可以索引的頁(yè)面,以超鏈接可以到達(dá)的靜態(tài)網(wǎng)頁(yè)為主構(gòu)成的 Web 頁(yè)面。Deep Web 是那些大部分內(nèi)容不能通過(guò)靜態(tài)鏈接獲取的、隱藏在搜索表單后的,只有用戶(hù)提交一些關(guān)鍵詞才能獲得的 Web 頁(yè)面。例如那些用戶(hù)注冊(cè)后內(nèi)容才可見(jiàn)的網(wǎng)頁(yè)就屬于 Deep Web。 2000 年 Bright Planet 指出:Deep Web 中可訪(fǎng)問(wèn)信息容量是 Surface Web 的幾百倍,是互聯(lián)網(wǎng)上最大、發(fā)展最快的新型信息資源[1] 。

Deep Web 爬蟲(chóng)體系結(jié)構(gòu)包含六個(gè)基本功能模塊 (爬行控制器、解析器、表單分析器、表單處理器、響應(yīng)分析器、LVS 控制器)和兩個(gè)爬蟲(chóng)內(nèi)部數(shù)據(jù)結(jié)構(gòu)(URL 列表、LVS 表)。 其中 LVS(Label Value Set)表示標(biāo)簽/數(shù)值集合,用來(lái)表示填充表單的數(shù)據(jù)源[1] 

Deep Web 爬蟲(chóng)爬行過(guò)程中最重要部分就是表單填寫(xiě),包含兩種類(lèi)型:

1) 基于領(lǐng)域知識(shí)的表單填寫(xiě):此方法一般會(huì)維持一個(gè)本體庫(kù),通過(guò)語(yǔ)義分析來(lái)選取合適的關(guān)鍵詞填寫(xiě)表單。 Yiyao Lu[25]等人提出一種獲取 Form 表單信息的多注解方法,將數(shù)據(jù)表單按語(yǔ)義分配到各個(gè)組中 ,對(duì)每組從多方面注解,結(jié)合各種注解結(jié)果來(lái)預(yù)測(cè)一個(gè)最終的注解標(biāo)簽;鄭冬冬等人利用一個(gè)預(yù)定義的領(lǐng)域本體知識(shí)庫(kù)來(lái)識(shí)別 Deep Web 頁(yè)面內(nèi)容, 同時(shí)利用一些來(lái)自 Web 站點(diǎn)導(dǎo)航模式來(lái)識(shí)別自動(dòng)填寫(xiě)表單時(shí)所需進(jìn)行的路徑導(dǎo)航[1] 

2) 基于網(wǎng)頁(yè)結(jié)構(gòu)分析的表單填寫(xiě): 此方法一般無(wú)領(lǐng)域知識(shí)或僅有有限的領(lǐng)域知識(shí),將網(wǎng)頁(yè)表單表示成 DOM 樹(shù),從中提取表單各字段值。 Desouky 等人提出一種 LEHW 方法,該方法將 HTML 網(wǎng)頁(yè)表示為DOM 樹(shù)形式,將表單區(qū)分為單屬性表單和多屬性表單,分別進(jìn)行處理;孫彬等人提出一種基于 XQuery 的搜索系統(tǒng),它能夠模擬表單和特殊頁(yè)面標(biāo)記切換,把網(wǎng)頁(yè)關(guān)鍵字切換信息描述為三元組單元,按照一定規(guī)則排除無(wú)效表單,將 Web 文檔構(gòu)造成 DOM 樹(shù),利用 XQuery 將文字屬性映射到表單字段[1] 

Raghavan 等人提出的 HIWE 系統(tǒng)中,爬行管理器負(fù)責(zé)管理整個(gè)爬行過(guò)程,分析下載的頁(yè)面,將包含表單的頁(yè)面提交表單處理器處理,表單處理器先從頁(yè)面中提取表單,從預(yù)先準(zhǔn)備好的數(shù)據(jù)集中選擇數(shù)據(jù)自動(dòng)填充并提交表單,由爬行控制器下載相應(yīng)的結(jié)果頁(yè)面[1] 。

抓取目標(biāo)的描述和定義

編輯

抓取目標(biāo)的描述和定義是決定網(wǎng)頁(yè)分析算法與URL搜索策略如何制訂的基礎(chǔ)。而網(wǎng)頁(yè)分析算法和候選URL排序算法是決定搜索引擎所提供的服務(wù)形式和爬蟲(chóng)網(wǎng)頁(yè)抓取行為的關(guān)鍵所在。這兩個(gè)部分的算法又是緊密相關(guān)的。

現(xiàn)有聚焦爬蟲(chóng)對(duì)抓取目標(biāo)的描述可分為基于目標(biāo)網(wǎng)頁(yè)特征、基于目標(biāo)數(shù)據(jù)模式和基于領(lǐng)域概念3種。

基于目標(biāo)網(wǎng)頁(yè)特征

基于目標(biāo)網(wǎng)頁(yè)特征的爬蟲(chóng)所抓取、存儲(chǔ)并索引的對(duì)象一般為網(wǎng)站或網(wǎng)頁(yè)。根據(jù)種子樣本獲取方式可分為:

(1) 預(yù)先給定的初始抓取種子樣本;

(2) 預(yù)先給定的網(wǎng)頁(yè)分類(lèi)目錄和與分類(lèi)目錄對(duì)應(yīng)的種子樣本,如Yahoo!分類(lèi)結(jié)構(gòu)等;

(3) 通過(guò)用戶(hù)行為確定的抓取目標(biāo)樣例,分為:

(a) 用戶(hù)瀏覽過(guò)程中顯示標(biāo)注的抓取樣本;

(b) 通過(guò)用戶(hù)日志挖掘得到訪(fǎng)問(wèn)模式及相關(guān)樣本。

其中,網(wǎng)頁(yè)特征可以是網(wǎng)頁(yè)的內(nèi)容特征,也可以是網(wǎng)頁(yè)的鏈接結(jié)構(gòu)特征,等等。

基于目標(biāo)數(shù)據(jù)模式

基于目標(biāo)數(shù)據(jù)模式的爬蟲(chóng)針對(duì)的是網(wǎng)頁(yè)上的數(shù)據(jù),所抓取的數(shù)據(jù)一般要符合一定的模式,或者可以轉(zhuǎn)化或映射為目標(biāo)數(shù)據(jù)模式。

基于領(lǐng)域概念

另一種描述方式是建立目標(biāo)領(lǐng)域的本體或詞典,用于從語(yǔ)義角度分析不同特征在某一主題中的重要程度。

網(wǎng)頁(yè)搜索策略

編輯

網(wǎng)頁(yè)的抓取策略可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會(huì)導(dǎo)致爬蟲(chóng)的陷入(trapped)問(wèn)題,目前常見(jiàn)的是廣度優(yōu)先和最佳優(yōu)先方法。

廣度優(yōu)先搜索

廣度優(yōu)先搜索策略是指在抓取過(guò)程中,在完成當(dāng)前層次的搜索后,才進(jìn)行下一層次的搜索。該算法的設(shè)計(jì)和實(shí)現(xiàn)相對(duì)簡(jiǎn)單。在目前為覆蓋盡可能多的網(wǎng)頁(yè),一般使用廣度優(yōu)先搜索方法。也有很多研究將廣度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲(chóng)中。其基本思想是認(rèn)為與初始URL在一定鏈接距離內(nèi)的網(wǎng)頁(yè)具有主題相關(guān)性的概率很大。另外一種方法是將廣度優(yōu)先搜索與網(wǎng)頁(yè)過(guò)濾技術(shù)結(jié)合使用,先用廣度優(yōu)先策略抓取網(wǎng)頁(yè),再將其中無(wú)關(guān)的網(wǎng)頁(yè)過(guò)濾掉。這些方法的缺點(diǎn)在于,隨著抓取網(wǎng)頁(yè)的增多,大量的無(wú)關(guān)網(wǎng)頁(yè)將被下載并過(guò)濾,算法的效率將變低。

最佳優(yōu)先搜索

最佳優(yōu)先搜索策略按照一定的網(wǎng)頁(yè)分析算法,預(yù)測(cè)候選URL與目標(biāo)網(wǎng)頁(yè)的相似度,或與主題的相關(guān)性,并選取評(píng)價(jià)最好的一個(gè)或幾個(gè)URL進(jìn)行抓取。它只訪(fǎng)問(wèn)經(jīng)過(guò)網(wǎng)頁(yè)分析算法預(yù)測(cè)為“有用”的網(wǎng)頁(yè)。存在的一個(gè)問(wèn)題是,在爬蟲(chóng)抓取路徑上的很多相關(guān)網(wǎng)頁(yè)可能被忽略,因?yàn)樽罴褍?yōu)先策略是一種局部最優(yōu)搜索算法。因此需要將最佳優(yōu)先結(jié)合具體的應(yīng)用進(jìn)行改進(jìn),以跳出局部最優(yōu)點(diǎn)。將在第4節(jié)中結(jié)合網(wǎng)頁(yè)分析算法作具體的討論。研究表明,這樣的閉環(huán)調(diào)整可以將無(wú)關(guān)網(wǎng)頁(yè)數(shù)量降低30%~90%。

深度優(yōu)先搜索

深度優(yōu)先搜索策略從起始網(wǎng)頁(yè)開(kāi)始,選擇一個(gè)URL進(jìn)入,分析這個(gè)網(wǎng)頁(yè)中的URL,選擇一個(gè)再進(jìn)入。如此一個(gè)鏈接一個(gè)鏈接地抓取下去,直到處理完一條路線(xiàn)之后再處理下一條路線(xiàn)。深度優(yōu)先策略設(shè)計(jì)較為簡(jiǎn)單。然而門(mén)戶(hù)網(wǎng)站提供的鏈接往往最具價(jià)值,PageRank也很高,但每深入一層,網(wǎng)頁(yè)價(jià)值和PageRank都會(huì)相應(yīng)地有所下降。這暗示了重要網(wǎng)頁(yè)通常距離種子較近,而過(guò)度深入抓取到的網(wǎng)頁(yè)卻價(jià)值很低。同時(shí),這種策略抓取深度直接影響著抓取命中率以及抓取效率,對(duì)抓取深度是該種策略的關(guān)鍵。相對(duì)于其他兩種策略而言。此種策略很少被使用。

網(wǎng)頁(yè)分析算法

編輯

網(wǎng)頁(yè)分析算法可以歸納為基于網(wǎng)絡(luò)拓?fù)?/a>、基于網(wǎng)頁(yè)內(nèi)容和基于用戶(hù)訪(fǎng)問(wèn)行為三種類(lèi)型。

拓?fù)浞治鏊惴?/h3>

基于網(wǎng)頁(yè)之間的鏈接,通過(guò)已知的網(wǎng)頁(yè)或數(shù)據(jù),來(lái)對(duì)與其有直接或間接鏈接關(guān)系的對(duì)象(可以是網(wǎng)頁(yè)或網(wǎng)站等)作出評(píng)價(jià)的算法。又分為網(wǎng)頁(yè)粒度、網(wǎng)站粒度和網(wǎng)頁(yè)塊粒度這三種。

1 網(wǎng)頁(yè)(Webpage)粒度的分析算法

PageRank和HITS算法是最常見(jiàn)的鏈接分析算法,兩者都是通過(guò)對(duì)網(wǎng)頁(yè)間鏈接度的遞歸和規(guī)范化計(jì)算,得到每個(gè)網(wǎng)頁(yè)的重要度評(píng)價(jià)。PageRank算法雖然考慮了用戶(hù)訪(fǎng)問(wèn)行為的隨機(jī)性和Sink網(wǎng)頁(yè)的存在,但忽略了絕大多數(shù)用戶(hù)訪(fǎng)問(wèn)時(shí)帶有目的性,即網(wǎng)頁(yè)和鏈接與查詢(xún)主題的相關(guān)性。針對(duì)這個(gè)問(wèn)題,HITS算法提出了兩個(gè)關(guān)鍵的概念:權(quán)威型網(wǎng)頁(yè)(authority)和中心型網(wǎng)頁(yè)(hub)。

基于鏈接的抓取的問(wèn)題是相關(guān)頁(yè)面主題團(tuán)之間的隧道現(xiàn)象,即很多在抓取路徑上偏離主題的網(wǎng)頁(yè)也指向目標(biāo)網(wǎng)頁(yè),局部評(píng)價(jià)策略中斷了在當(dāng)前路徑上的抓取行為。文獻(xiàn)[21]提出了一種基于反向鏈接(BackLink)的分層式上下文模型(Context Model),用于描述指向目標(biāo)網(wǎng)頁(yè)一定物理跳數(shù)半徑內(nèi)的網(wǎng)頁(yè)拓?fù)鋱D的中心Layer0為目標(biāo)網(wǎng)頁(yè),將網(wǎng)頁(yè)依據(jù)指向目標(biāo)網(wǎng)頁(yè)的物理跳數(shù)進(jìn)行層次劃分,從外層網(wǎng)頁(yè)指向內(nèi)層網(wǎng)頁(yè)的鏈接稱(chēng)為反向鏈接。

2 網(wǎng)站粒度的分析算法

網(wǎng)站粒度的資源發(fā)現(xiàn)和管理策略也比網(wǎng)頁(yè)粒度的更簡(jiǎn)單有效。網(wǎng)站粒度的爬蟲(chóng)抓取的關(guān)鍵之處在于站點(diǎn)的劃分和站點(diǎn)等級(jí)(SiteRank)的計(jì)算。SiteRank的計(jì)算方法與PageRank類(lèi)似,但是需要對(duì)網(wǎng)站之間的鏈接作一定程度抽象,并在一定的模型下計(jì)算鏈接的權(quán)重。

網(wǎng)站劃分情況分為按域名劃分和按IP地址劃分兩種。文獻(xiàn)[18]討論了在分布式情況下,通過(guò)對(duì)同一個(gè)域名下不同主機(jī)、服務(wù)器的IP地址進(jìn)行站點(diǎn)劃分,構(gòu)造站點(diǎn)圖,利用類(lèi)似PageRank的方法評(píng)價(jià)SiteRank。同時(shí),根據(jù)不同文件在各個(gè)站點(diǎn)上的分布情況,構(gòu)造文檔圖,結(jié)合SiteRank分布式計(jì)算得到DocRank。文獻(xiàn)[18]證明,利用分布式的SiteRank計(jì)算,不僅大大降低了單機(jī)站點(diǎn)的算法代價(jià),而且克服了單獨(dú)站點(diǎn)對(duì)整個(gè)網(wǎng)絡(luò)覆蓋率有限的缺點(diǎn)。附帶的一個(gè)優(yōu)點(diǎn)是,常見(jiàn)PageRank 造假難以對(duì)SiteRank進(jìn)行欺騙。

3 網(wǎng)頁(yè)塊粒度的分析算法

在一個(gè)頁(yè)面中,往往含有多個(gè)指向其他頁(yè)面的鏈接,這些鏈接中只有一部分是指向主題相關(guān)網(wǎng)頁(yè)的,或根據(jù)網(wǎng)頁(yè)的鏈接錨文本表明其具有較高重要性。但是,在PageRank和HITS算法中,沒(méi)有對(duì)這些鏈接作區(qū)分,因此常常給網(wǎng)頁(yè)分析帶來(lái)廣告等噪聲鏈接的干擾。在網(wǎng)頁(yè)塊級(jí)別(Block?level)進(jìn)行鏈接分析的算法的基本思想是通過(guò)VIPS網(wǎng)頁(yè)分割算法將網(wǎng)頁(yè)分為不同的網(wǎng)頁(yè)塊(page block),然后對(duì)這些網(wǎng)頁(yè)塊建立page?to?block和block?to?page的鏈接矩陣,?分別記為Z和X。于是,在page?to?page圖上的網(wǎng)頁(yè)塊級(jí)別的PageRank為?W?p=X×Z;?在block?to?block圖上的BlockRank為?W?b=Z×X。已經(jīng)有人實(shí)現(xiàn)了塊級(jí)別的PageRank和HITS算法,并通過(guò)實(shí)驗(yàn)證明,效率和準(zhǔn)確率都比傳統(tǒng)的對(duì)應(yīng)算法要好。

網(wǎng)頁(yè)內(nèi)容分析算法

基于網(wǎng)頁(yè)內(nèi)容的分析算法指的是利用網(wǎng)頁(yè)內(nèi)容(文本、數(shù)據(jù)等資源)特征進(jìn)行的網(wǎng)頁(yè)評(píng)價(jià)。網(wǎng)頁(yè)的內(nèi)容從原來(lái)的以超文本為主,發(fā)展到后來(lái)動(dòng)態(tài)頁(yè)面(或稱(chēng)為Hidden Web)數(shù)據(jù)為主,后者的數(shù)據(jù)量約為直接可見(jiàn)頁(yè)面數(shù)據(jù)(PIW,Publicly Indexable Web)的400~500倍。另一方面,多媒體數(shù)據(jù)、Web Service等各種網(wǎng)絡(luò)資源形式也日益豐富。因此,基于網(wǎng)頁(yè)內(nèi)容的分析算法也從原來(lái)的較為單純的文本檢索方法,發(fā)展為涵蓋網(wǎng)頁(yè)數(shù)據(jù)抽取、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、語(yǔ)義理解等多種方法的綜合應(yīng)用。本節(jié)根據(jù)網(wǎng)頁(yè)數(shù)據(jù)形式的不同,將基于網(wǎng)頁(yè)內(nèi)容的分析算法,歸納以下三類(lèi):第一種針對(duì)以文本和超鏈接為主的無(wú)結(jié)構(gòu)或結(jié)構(gòu)很簡(jiǎn)單的網(wǎng)頁(yè);第二種針對(duì)從結(jié)構(gòu)化的數(shù)據(jù)源(如RDBMS)動(dòng)態(tài)生成的頁(yè)面,其數(shù)據(jù)不能直接批量訪(fǎng)問(wèn);第三種針對(duì)的數(shù)據(jù)界于第一和第二類(lèi)數(shù)據(jù)之間,具有較好的結(jié)構(gòu),顯示遵循一定模式或風(fēng)格,且可以直接訪(fǎng)問(wèn)。

基于文本的網(wǎng)頁(yè)分析算法

1) 純文本分類(lèi)與聚類(lèi)算法

很大程度上借用了文本檢索的技術(shù)。文本分析算法可以快速有效的對(duì)網(wǎng)頁(yè)進(jìn)行分類(lèi)和聚類(lèi),但是由于忽略了網(wǎng)頁(yè)間和網(wǎng)頁(yè)內(nèi)部的結(jié)構(gòu)信息,很少單獨(dú)使用。

2) 超文本分類(lèi)和聚類(lèi)算法

根據(jù)網(wǎng)頁(yè)鏈接網(wǎng)頁(yè)的相關(guān)類(lèi)型對(duì)網(wǎng)頁(yè)進(jìn)行分類(lèi),依靠相關(guān)聯(lián)的網(wǎng)頁(yè)推測(cè)該網(wǎng)頁(yè)的類(lèi)型。

補(bǔ)充

編輯

這些處理被稱(chēng)為網(wǎng)絡(luò)抓取或者蜘蛛爬行。很多站點(diǎn),尤其是搜索引擎,都使用爬蟲(chóng)提供最新的數(shù)據(jù),它主要用于提供它訪(fǎng)問(wèn)過(guò)頁(yè)面的一個(gè)副本,然后,搜索引擎就可以對(duì)得到的頁(yè)面進(jìn)行索引,以提供快速的訪(fǎng)問(wèn)。蜘蛛也可以在web上用來(lái)自動(dòng)執(zhí)行一些任務(wù),例如檢查鏈接,確認(rèn)html代碼;也可以用來(lái)抓取網(wǎng)頁(yè)上某種特定類(lèi)型信息,例如抓取電子郵件地址(通常用于垃圾郵件)。

一個(gè)網(wǎng)絡(luò)蜘蛛就是一種機(jī)器人,或者軟件代理。大體上,它從一組要訪(fǎng)問(wèn)的URL鏈接開(kāi)始,可以稱(chēng)這些URL為種子。爬蟲(chóng)訪(fǎng)問(wèn)這些鏈接,它辨認(rèn)出這些頁(yè)面的所有超鏈接,然后添加到這個(gè)URL列表,可以稱(chēng)作檢索前沿。這些URL按照一定的策略反復(fù)訪(fǎng)問(wèn)。

1. 爬行策略

下述的三種網(wǎng)絡(luò)特征,造成了設(shè)計(jì)網(wǎng)頁(yè)爬蟲(chóng)抓取策略變得很難:

? 它巨大的數(shù)據(jù)量;

? 它快速的更新頻率;

? 動(dòng)態(tài)頁(yè)面的產(chǎn)生

它們?nèi)齻€(gè)特征一起產(chǎn)生了很多種類(lèi)的爬蟲(chóng)抓取鏈接。

巨大的數(shù)據(jù)量暗示了爬蟲(chóng),在給定的時(shí)間內(nèi),只可以抓取所下載網(wǎng)絡(luò)的一部分,所以,它需要對(duì)它的抓取頁(yè)面設(shè)置優(yōu)先級(jí);快速的更新頻率說(shuō)明在爬蟲(chóng)抓取下載某網(wǎng)站一個(gè)網(wǎng)頁(yè)的時(shí)候,很有可能在這個(gè)站點(diǎn)又有新的網(wǎng)頁(yè)被添加進(jìn)來(lái),或者這個(gè)頁(yè)面被更新或者刪除了。

最近新增的很多頁(yè)面都是通過(guò)服務(wù)器端腳本語(yǔ)言產(chǎn)生的,無(wú)窮的參數(shù)組合也增加了爬蟲(chóng)抓取的難度,只有一小部分這種組合會(huì)返回一些獨(dú)特的內(nèi)容。例如,一個(gè)很小照片存儲(chǔ)庫(kù)僅僅通過(guò)get方式可能提供就給用戶(hù)三種操作方式。如果這里存著四種分類(lèi)方式,三種縮略圖方式,兩種文件格式,和一個(gè)禁止用戶(hù)提供內(nèi)容的選項(xiàng),那么,同樣的內(nèi)容就可以通過(guò)48種方式訪(fǎng)問(wèn)。這種數(shù)學(xué)組合給網(wǎng)絡(luò)爬蟲(chóng)創(chuàng)造的難處就是,為了獲取不同的內(nèi)容,他們必須篩選無(wú)窮僅有微小變化的組合。

正如愛(ài)德華等人所說(shuō)的:“用于檢索的帶寬不是無(wú)限的,也不是免費(fèi)的;所以,如果引入衡量爬蟲(chóng)抓取質(zhì)量或者新鮮度的有效指標(biāo)的話(huà),不但伸縮性,連有效性都將變得十分必要”(愛(ài)德華等人,2001年)。一個(gè)爬蟲(chóng)就必須小心的選擇下一步要訪(fǎng)問(wèn)什么頁(yè)面。網(wǎng)頁(yè)爬蟲(chóng)的行為通常是四種策略組合的結(jié)果。

? 選擇策略,決定所要下載的頁(yè)面;

? 重新訪(fǎng)問(wèn)策略,決定什么時(shí)候檢查頁(yè)面的更新變化;

? 平衡禮貌策略,指出怎樣避免站點(diǎn)超載;

? 并行策略,指出怎么協(xié)同達(dá)到分布式抓取的效果;

1.1 選擇策略:

就現(xiàn)在網(wǎng)絡(luò)資源的大小而言,即使很大的搜索引擎也只能獲取網(wǎng)絡(luò)上可得到資源的一小部分。由勞倫斯河蓋爾斯共同做的一項(xiàng)研究指出,沒(méi)有一個(gè)搜索引擎抓取的內(nèi)容達(dá)到網(wǎng)絡(luò)的16%(勞倫斯河蓋爾斯,2001)。網(wǎng)絡(luò)爬蟲(chóng)通常僅僅下載網(wǎng)頁(yè)內(nèi)容的一部分,但是大家都還是強(qiáng)烈要求下載的部分包括最多的相關(guān)頁(yè)面,而不僅僅是一個(gè)隨機(jī)的簡(jiǎn)單的站點(diǎn)。

這就要求一個(gè)公共標(biāo)準(zhǔn)來(lái)區(qū)分網(wǎng)頁(yè)的重要程度,一個(gè)頁(yè)面的重要程度與他自身的質(zhì)量有關(guān),與按照鏈接數(shù)、訪(fǎng)問(wèn)數(shù)得出的受歡迎程度有關(guān),甚至與他本身的網(wǎng)址(后來(lái)出現(xiàn)的把搜索放在一個(gè)頂級(jí)域名或者一個(gè)固定頁(yè)面上的垂直搜索)有關(guān)。設(shè)計(jì)一個(gè)好的搜索策略還有額外的困難,它必須在不完全信息下工作,因?yàn)檎麄€(gè)頁(yè)面的集合在抓取時(shí)是未知的。

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

Najork和Wiener (Najork and Wiener, 2001)采用實(shí)際的爬蟲(chóng),對(duì)3.28億個(gè)網(wǎng)頁(yè),采用廣度優(yōu)先研究。他們發(fā)現(xiàn)廣度優(yōu)先會(huì)較早的抓到PageRank高的頁(yè)面(但是他們沒(méi)有采用其他策略進(jìn)行研究)。作者給出的解釋是:“最重要的頁(yè)面會(huì)有很多的主機(jī)連接到他們,并且那些鏈接會(huì)較早的發(fā)現(xiàn),而不用考慮從哪一個(gè)主機(jī)開(kāi)始?!?/p>

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

Boldi等人(Boldi et al., 2004)的模擬檢索實(shí)驗(yàn)進(jìn)行在 從.it網(wǎng)絡(luò)上取下的4000萬(wàn)個(gè)頁(yè)面和從webbase得到的1億個(gè)頁(yè)面上,測(cè)試廣度優(yōu)先和深度優(yōu)先,隨機(jī)序列和有序序列。比較的基礎(chǔ)是真實(shí)頁(yè)面pageRank值和計(jì)算出來(lái)的pageRank值的接近程度。令人驚奇的是,一些計(jì)算pageRank很快的頁(yè)面(特別明顯的是廣度優(yōu)先策略和有序序列)僅僅可以達(dá)到很小的接近程度。

Baeza-Yates等人(Baeza-Yates et al., 2005) 在從.gr域名和.cl域名子網(wǎng)站上獲取的300萬(wàn)個(gè)頁(yè)面上模擬實(shí)驗(yàn),比較若干個(gè)抓取策略。結(jié)果顯示OPIC策略和站點(diǎn)隊(duì)列長(zhǎng)度,都比廣度優(yōu)先要好;并且如果可行的話(huà),使用之前的爬行抓取結(jié)果來(lái)指導(dǎo)這次抓取,總是十分有效的。

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

1.1.1 限定訪(fǎng)問(wèn)鏈接

一個(gè)爬蟲(chóng)可能僅僅想找到html頁(yè)面的種子而避免其他的文件類(lèi)型。為了僅僅得到html的資源,一個(gè)爬蟲(chóng)可以首先做一個(gè)http head的請(qǐng)求,以在使用request方法獲取所有的資源之前,決定這個(gè)網(wǎng)絡(luò)文件的類(lèi)型。為了避免要發(fā)送過(guò)多的head請(qǐng)求,爬蟲(chóng)可以交替的檢查url并且僅僅對(duì)以html,htm和反斜杠結(jié)尾的文件發(fā)送資源請(qǐng)求。這種策略會(huì)導(dǎo)致很多的html資源在無(wú)意中錯(cuò)過(guò),一種相似的策略是將網(wǎng)絡(luò)資源的擴(kuò)展名同已知是html文件類(lèi)型的一組擴(kuò)展名(如.html,.htm,.asp,.php,.aspx,反斜杠)進(jìn)行比較。

一些爬蟲(chóng)也會(huì)限制對(duì)任何含有“?”的資源(這些是動(dòng)態(tài)生成的)進(jìn)行獲取請(qǐng)求,以避免蜘蛛爬行在某一個(gè)站點(diǎn)中陷入下載無(wú)窮無(wú)盡的URL的困境。

1.1.2 路徑檢索

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

一些路徑檢索的爬蟲(chóng)也被稱(chēng)為收割機(jī)軟件,因?yàn)樗麄兺ǔS糜谑崭罨蛘呤占械膬?nèi)容,可能是從特定的頁(yè)面或者主機(jī)收集相冊(cè)的照片。

1.1.3 聚焦抓取

爬蟲(chóng)所抓取頁(yè)面的重要程度也可以表述成它與給定查詢(xún)之間相似程度的函數(shù)。網(wǎng)絡(luò)爬蟲(chóng)嘗試下載相似頁(yè)面,可以稱(chēng)為聚焦檢索或者主題檢索。關(guān)于主題檢索和聚焦檢索的概念,最早是由Menczer(Menczer 1997; Menczer and Belew, 1998)和Chakrabarti等人首先提出來(lái)的(Chakrabarti et al., 1999)。

聚焦檢索的主要問(wèn)題是網(wǎng)頁(yè)爬蟲(chóng)的使用環(huán)境,我們希望在實(shí)際下載頁(yè)面之前,就可以知道給定頁(yè)面和查詢(xún)之間的相似度。一個(gè)可能的方法就是在鏈接之中設(shè)置錨點(diǎn),這就是在早期時(shí)候,Pinkerton(Pinkerton,1994)曾經(jīng)在一個(gè)爬蟲(chóng)中采用的策略。Diligenti等人(Diligenti等人,2000)建議使用已經(jīng)抓取頁(yè)面的內(nèi)容去推測(cè)查詢(xún)和未訪(fǎng)問(wèn)頁(yè)的相似度。一個(gè)聚焦查詢(xún)的表現(xiàn)的好壞主要依賴(lài)于查詢(xún)主題內(nèi)容的豐富程度,通常還會(huì)依賴(lài)頁(yè)面查詢(xún)引擎提供的查詢(xún)起點(diǎn)。

1.1.4 抓取深層的網(wǎng)頁(yè)

很多的頁(yè)面隱藏的很深或隱藏在在看不到的網(wǎng)絡(luò)之中。這些頁(yè)面通常只有在向數(shù)據(jù)庫(kù)提交查詢(xún)的時(shí)候才可以訪(fǎng)問(wèn)到,如果沒(méi)有鏈接指向他們的話(huà),一般的爬蟲(chóng)是不能訪(fǎng)問(wèn)到這些頁(yè)面的。谷歌站點(diǎn)地圖協(xié)議和mod oai(Nelson等人,2005)嘗試允許發(fā)現(xiàn)這些深層次的資源。

深層頁(yè)面抓取器增加了抓取網(wǎng)頁(yè)的鏈接數(shù)。一些爬蟲(chóng)僅僅抓取形如<a href=”url”鏈接。某些情況下,例如Googlebot,WEB抓取的是所有超文本所包含的內(nèi)容,標(biāo)簽和文本。

1.1.5 WEB3.0檢索

Web3.0為下一代搜索技術(shù)定義了更先進(jìn)的技術(shù)和新的準(zhǔn)則,可以概括為語(yǔ)義網(wǎng)絡(luò)和網(wǎng)站模板解析的概念。第三代檢索技術(shù)將建立在人機(jī)巧妙的聯(lián)系的基礎(chǔ)上。

1.2重新訪(fǎng)問(wèn)策略

網(wǎng)絡(luò)具有動(dòng)態(tài)性很強(qiáng)的特性。抓取網(wǎng)絡(luò)上的一小部分內(nèi)容可能會(huì)花費(fèi)真的很長(zhǎng)的時(shí)間,通常用周或者月來(lái)衡量。當(dāng)爬蟲(chóng)完成它的抓取的任務(wù)以后,很多操作是可能會(huì)發(fā)生的,這些操作包括新建,更新和刪除。

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

新鮮度:這是一個(gè)衡量抓取內(nèi)容是不是準(zhǔn)確的二元值。在時(shí)間t內(nèi),倉(cāng)庫(kù)中頁(yè)面p的新鮮度是這樣定義的:

新鮮度新鮮度

過(guò)時(shí)性:這是一個(gè)衡量本地已抓取的內(nèi)容過(guò)時(shí)程度的指標(biāo)。在時(shí)間t時(shí),倉(cāng)庫(kù)中頁(yè)面p的時(shí)效性的定義如下:

過(guò)時(shí)性過(guò)時(shí)性

在頁(yè)面抓取中,新鮮度和過(guò)時(shí)性的發(fā)展

Coffman等人(Edward G. Coffman,1998)是從事爬蟲(chóng)對(duì)象定義的,他們提出了一個(gè)相當(dāng)于新鮮度的概念,但是使用了不同的措詞:他們建議爬蟲(chóng)必須最小化過(guò)時(shí)頁(yè)面部分。他們指出網(wǎng)絡(luò)爬行的問(wèn)題就相當(dāng)于多個(gè)隊(duì)列,一個(gè)投票系統(tǒng);這里,爬蟲(chóng)是服務(wù)器,不同的站點(diǎn)是隊(duì)列。頁(yè)面修改是到達(dá)的顧客,頁(yè)面切換的時(shí)間是頁(yè)面進(jìn)入一個(gè)單一站點(diǎn)的間隔。在這個(gè)模型下,每一個(gè)顧客在投票系統(tǒng)的平均時(shí)間,相當(dāng)于爬蟲(chóng)的平均過(guò)時(shí)性。

爬蟲(chóng)的目標(biāo)是盡可能高的提高頁(yè)面的新鮮度,同時(shí)降低頁(yè)面的過(guò)時(shí)性。這一目標(biāo)并不是完全一樣的,第一種情況,爬蟲(chóng)關(guān)心的是有多少頁(yè)面時(shí)過(guò)時(shí)的;在第二種情況,爬蟲(chóng)關(guān)心的頁(yè)面過(guò)時(shí)了多少。

兩種最簡(jiǎn)單的重新訪(fǎng)問(wèn)策略是由Cho和Garcia-Molina研究的(Cho 和Garcia-Molina,2003):

統(tǒng)一策略:使用相同的頻率,重新訪(fǎng)問(wèn)收藏中的所有的鏈接,而不考慮他們更新頻率。

正比策略:對(duì)變化越多的網(wǎng)頁(yè),重新訪(fǎng)問(wèn)的頻率也越高。網(wǎng)頁(yè)訪(fǎng)問(wèn)的頻率和網(wǎng)頁(yè)變化的頻率直接相關(guān)。

(兩種情況下,爬蟲(chóng)的重新抓取都可以采用隨機(jī)方式,或者固定的順序)

Cho和Garcia-Molina證明了一個(gè)出人意料的結(jié)果。以平均新鮮度方式衡量,統(tǒng)一策略在模擬頁(yè)面和真實(shí)的網(wǎng)絡(luò)抓取中都比正比策略出色。對(duì)于這種結(jié)果的解釋是:當(dāng)一個(gè)頁(yè)面變化太快的時(shí)候,爬蟲(chóng)將會(huì)將會(huì)在不斷的嘗試重新抓取而浪費(fèi)很多時(shí)間,但是卻還是不能保證頁(yè)面的新鮮度。

為了提高頁(yè)面的新鮮度,我們應(yīng)該宣判變化太快的頁(yè)面死罪(Cho和Garcia-Molina, 2003a)。最佳的重新訪(fǎng)問(wèn)策略既不是統(tǒng)一策略,也不是正比策略;保持平均頁(yè)面新鮮度高的最佳方法策略包括忽略那些變化太快的頁(yè)面,而保持頁(yè)面平均過(guò)時(shí)性低的方法則是對(duì)每一頁(yè)按照頁(yè)面變化率單調(diào)變化的策略訪(fǎng)問(wèn)。兩種情況下,最佳的策略較正比策略,都更接近統(tǒng)一策略。正如Coffman等人(Edward G.Coffman,1998)所注意到的:“為了最小化頁(yè)面過(guò)時(shí)的時(shí)間,對(duì)任一個(gè)頁(yè)面的訪(fǎng)問(wèn)都應(yīng)該盡可能的均勻間隔地訪(fǎng)問(wèn)。”對(duì)于重新訪(fǎng)問(wèn)的詳盡的策略在大體上是不可以達(dá)到的,但是他們可以從數(shù)學(xué)上得到,因?yàn)樗麄円蕾?lài)于頁(yè)面的變化。(Cho和Garcia-Molina,2003a)指出指數(shù)變化是描述頁(yè)面變化的好方法,同時(shí)(Ipeirotis等人,2005)指出了怎么使用統(tǒng)計(jì)工具去發(fā)現(xiàn)適合這些變化的參數(shù)。注意在這里的重新訪(fǎng)問(wèn)策略認(rèn)為每一個(gè)頁(yè)面都是相同的(網(wǎng)絡(luò)上所有的頁(yè)面價(jià)值都是一樣的)這不是現(xiàn)實(shí)的情況,所以,為了獲取更好的抓取策略,更多有關(guān)網(wǎng)頁(yè)質(zhì)量的信息應(yīng)該考慮進(jìn)去。

1.3 平衡禮貌策略

爬蟲(chóng)相比于人,可以有更快的檢索速度和更深的層次,所以,他們可能使一個(gè)站點(diǎn)癱瘓。不需要說(shuō)一個(gè)單獨(dú)的爬蟲(chóng)一秒鐘要執(zhí)行多條請(qǐng)求,下載大的文件。一個(gè)服務(wù)器也會(huì)很難響應(yīng)多線(xiàn)程爬蟲(chóng)的請(qǐng)求。

就像Koster(Koster,1995)所注意的那樣,爬蟲(chóng)的使用對(duì)很多工作都是很有用的,但是對(duì)一般的社區(qū),也需要付出代價(jià)。使用爬蟲(chóng)的代價(jià)包括:

? 網(wǎng)絡(luò)資源:在很長(zhǎng)一段時(shí)間,爬蟲(chóng)使用相當(dāng)?shù)膸捀叨炔⑿械毓ぷ鳌?/p>

? 服務(wù)器超載:尤其是對(duì)給定服務(wù)器的訪(fǎng)問(wèn)過(guò)高時(shí)。

? 質(zhì)量糟糕的爬蟲(chóng),可能導(dǎo)致服務(wù)器或者路由器癱瘓,或者會(huì)嘗試下載自己無(wú)法處理的頁(yè)面。

? 個(gè)人爬蟲(chóng),如果過(guò)多的人使用,可能導(dǎo)致網(wǎng)絡(luò)或者服務(wù)器阻塞。

對(duì)這些問(wèn)題的一個(gè)部分解決方法是漫游器排除協(xié)議(Robots exclusion protocol),也被稱(chēng)為robots.txt議定書(shū)(Koster,1996),這份協(xié)議對(duì)于管理員指明網(wǎng)絡(luò)服務(wù)器的那一部分不能到達(dá)是一個(gè)標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)沒(méi)有包括重新訪(fǎng)問(wèn)一臺(tái)服務(wù)器的間隔的建議,雖然訪(fǎng)問(wèn)間隔是避免服務(wù)器超載的最有效的辦法。最近的商業(yè)搜索軟件,如Ask Jeeves,MSN和Yahoo可以在robots.txt中使用一個(gè)額外的 “Crawl-delay”參數(shù)來(lái)指明請(qǐng)求之間的延遲。

對(duì)連接間隔時(shí)間的第一個(gè)建議由Koster 1993年給出,時(shí)間是60秒。按照這個(gè)速度,如果一個(gè)站點(diǎn)有超過(guò)10萬(wàn)的頁(yè)面,即使我們擁有零延遲和無(wú)窮帶寬的完美連接,它也會(huì)需要兩個(gè)月的時(shí)間來(lái)下載整個(gè)站點(diǎn),并且,這個(gè)服務(wù)器中的資源,只有一小部分可以使用。這似乎是不可以接受的。

Cho(Cho和Garcia-Molina, 2003)使用10秒作為訪(fǎng)問(wèn)的間隔時(shí)間,WIRE爬蟲(chóng)(Baeza-Yates and Castillo, 2002)使用15秒作為默認(rèn)間隔。MercatorWeb(Heydon 和Najork, 1999)爬蟲(chóng)使用了一種自適應(yīng)的平衡策略:如果從某一服務(wù)器下載一個(gè)文檔需要t秒鐘,爬蟲(chóng)就等待10t秒的時(shí)間,然后開(kāi)始下一個(gè)頁(yè)面。Dill等人 (Dill et al., 2002) 使用1秒。

對(duì)于那些使用爬蟲(chóng)用于研究目的的,一個(gè)更詳細(xì)的成本-效益分析是必要的,當(dāng)決定去哪一個(gè)站點(diǎn)抓取,使用多快的速度抓取的時(shí)候,倫理的因素也需要考慮進(jìn)來(lái)。

訪(fǎng)問(wèn)記錄顯示已知爬蟲(chóng)的訪(fǎng)問(wèn)間隔從20秒鐘到3-4分鐘不等。需要注意的是即使很禮貌,采取了所有的安全措施來(lái)避免服務(wù)器超載,還是會(huì)引來(lái)一些網(wǎng)絡(luò)服務(wù)器管理員的抱怨的。Brin和Page注意到:運(yùn)行一個(gè)針對(duì)超過(guò)50萬(wàn)服務(wù)器的爬蟲(chóng),會(huì)產(chǎn)生很多的郵件和電話(huà)。這是因?yàn)橛袩o(wú)數(shù)的人在上網(wǎng),而這些人不知道爬蟲(chóng)是什么,因?yàn)檫@是他們第一次見(jiàn)到。(Brin和Page,1998)

1.4 并行策略

一個(gè)并行爬蟲(chóng)是并行運(yùn)行多個(gè)進(jìn)程的爬蟲(chóng)。它的目標(biāo)是最大化下載的速度,同時(shí)盡量減少并行的開(kāi)銷(xiāo)和下載重復(fù)的頁(yè)面。為了避免下載一個(gè)頁(yè)面兩次,爬蟲(chóng)系統(tǒng)需要策略來(lái)處理爬蟲(chóng)運(yùn)行時(shí)新發(fā)現(xiàn)的URL,因?yàn)橥粋€(gè)URL地址,可能被不同的爬蟲(chóng)進(jìn)程抓到。

2. 網(wǎng)絡(luò)爬蟲(chóng)體系結(jié)構(gòu)

網(wǎng)頁(yè)爬蟲(chóng)的高層體系結(jié)構(gòu)

一個(gè)爬蟲(chóng)不能像上面所說(shuō)的,僅僅只有一個(gè)好的抓取策略,還需要有一個(gè)高度優(yōu)化的結(jié)構(gòu)。

Shkapenyuk和Suel(Shkapenyuk和Suel,2002)指出:設(shè)計(jì)一個(gè)短時(shí)間內(nèi),一秒下載幾個(gè)頁(yè)面的頗慢的爬蟲(chóng)是一件很容易的事情,而要設(shè)計(jì)一個(gè)使用幾周可以下載百萬(wàn)級(jí)頁(yè)面的高性能的爬蟲(chóng),將會(huì)在系統(tǒng)設(shè)計(jì),I/O和網(wǎng)絡(luò)效率,健壯性和易用性方面遇到眾多挑戰(zhàn)。

網(wǎng)路爬蟲(chóng)是搜索引擎的核心,他們算法和結(jié)構(gòu)上的細(xì)節(jié)被當(dāng)作商業(yè)機(jī)密。當(dāng)爬蟲(chóng)的設(shè)計(jì)發(fā)布時(shí),總會(huì)有一些為了阻止別人復(fù)制工作而缺失的細(xì)節(jié)。人們也開(kāi)始關(guān)注主要用于阻止主要搜索引擎發(fā)布他們的排序算法的“搜索引擎垃圾郵件”。

2.1 URL一般化

爬蟲(chóng)通常會(huì)執(zhí)行幾種類(lèi)型的URL規(guī)范化來(lái)避免重復(fù)抓取某些資源。URL一般化也被稱(chēng)為URL標(biāo)準(zhǔn)化,指的是修正URL并且使其前后一致的過(guò)程。這里有幾種一般化方法,包括轉(zhuǎn)化URL為小寫(xiě)的,去除逗號(hào)(如‘.’ ‘..’等),對(duì)非空的路徑,在末尾加反斜杠。

3. 爬蟲(chóng)身份識(shí)別

網(wǎng)絡(luò)爬蟲(chóng)通過(guò)使用http請(qǐng)求的用戶(hù)代理(User Agent)字段來(lái)向網(wǎng)絡(luò)服務(wù)器表明他們的身份。網(wǎng)絡(luò)管理員則通過(guò)檢查網(wǎng)絡(luò)服務(wù)器的日志,使用用戶(hù)代理字段來(lái)辨認(rèn)哪一個(gè)爬蟲(chóng)曾經(jīng)訪(fǎng)問(wèn)過(guò)以及它訪(fǎng)問(wèn)的頻率。用戶(hù)代理字段可能會(huì)包含一個(gè)可以讓管理員獲取爬蟲(chóng)更多信息的URL。郵件抓取器和其他懷有惡意的網(wǎng)絡(luò)爬蟲(chóng)通常不會(huì)留任何的用戶(hù)代理字段內(nèi)容,或者他們也會(huì)將他們的身份偽裝成瀏覽器或者其他的知名爬蟲(chóng)。

對(duì)于網(wǎng)路爬蟲(chóng),留下用戶(hù)標(biāo)志信息是十分重要的;這樣,網(wǎng)絡(luò)管理員在需要的時(shí)候就可以聯(lián)系爬蟲(chóng)的主人。有時(shí),爬蟲(chóng)可能會(huì)陷入爬蟲(chóng)陷阱或者使一個(gè)服務(wù)器超負(fù)荷,這時(shí),爬蟲(chóng)主人需要使爬蟲(chóng)停止。對(duì)那些有興趣了解特定爬蟲(chóng)訪(fǎng)問(wèn)時(shí)間網(wǎng)絡(luò)管理員來(lái)講,用戶(hù)標(biāo)識(shí)信息是十分重要的。

4.用戶(hù)爬蟲(chóng)的例子

以下是一系列已經(jīng)發(fā)布的一般用途的網(wǎng)絡(luò)爬蟲(chóng)(除了主題檢索的爬蟲(chóng))的體系結(jié)構(gòu),包括了對(duì)不同組件命名和突出特點(diǎn)的簡(jiǎn)短的描述。

? RBSE (Eichmann,1994)是第一個(gè)發(fā)布的爬蟲(chóng)。它有兩個(gè)基礎(chǔ)程序。第一個(gè)是“spider”,抓取隊(duì)列中的內(nèi)容到一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第二個(gè)程序是“mite”,是一個(gè)修改后的www的ASCII瀏覽器,負(fù)責(zé)從網(wǎng)絡(luò)上下載頁(yè)面。

? WebCrawler(Pinkerton,1994)是第一個(gè)公開(kāi)可用的 用來(lái)建立全文索引的一個(gè)子程序,他使用庫(kù)www來(lái)下載頁(yè)面;另外一個(gè)程序使用廣度優(yōu)先來(lái)解析獲取URL并對(duì)其排序;它還包括一個(gè)根據(jù)選定文本和查詢(xún)相似程度爬行的實(shí)時(shí)爬蟲(chóng)。

? World Wide Web Worm (McBryan, 1994)是一個(gè)用來(lái)為文件建立包括標(biāo)題和URL簡(jiǎn)單索引的爬蟲(chóng)。索引可以通過(guò)grep式的Unix命令來(lái)搜索。

? Google Crawler (Brin and Page, 1998)用了一些細(xì)節(jié)來(lái)描述,但是這些細(xì)節(jié)僅僅是關(guān)于使用C++和Python編寫(xiě)的、一個(gè)早期版本的體系結(jié)構(gòu)。因?yàn)槲谋窘馕鼍褪侨臋z索和URL抽取的過(guò)程,所以爬蟲(chóng)集成了索引處理。這里擁有一個(gè)URL服務(wù)器,用來(lái)給幾個(gè)爬蟲(chóng)程序發(fā)送要抓取的URL列表。在文本解析的時(shí)候,新發(fā)現(xiàn)的URL傳送給URL服務(wù)器并檢測(cè)這個(gè)URL是不是已經(jīng)存在,如果不存在的話(huà),該URL就加入到URL服務(wù)器中。

? CobWeb (da Silva et al., 1999)使用了一個(gè)中央“調(diào)度者”和一系列的“分布式的搜集者”。搜集者解析下載的頁(yè)面并把找到的URL發(fā)送給調(diào)度者,然后調(diào)度者反過(guò)來(lái)分配給搜集者。調(diào)度者使用深度優(yōu)先策略,并且使用平衡禮貌策略來(lái)避免服務(wù)器超載。爬蟲(chóng)是使用Perl語(yǔ)言編寫(xiě)的。

? Mercator (Heydon and Najork, 1999; Najork and Heydon, 2001)是一個(gè)分布式的,模塊化的使用java編寫(xiě)的網(wǎng)絡(luò)爬蟲(chóng)。它的模塊化源自于使用可互換的的“協(xié)議模塊”和“處理模塊”。協(xié)議模塊負(fù)責(zé)怎樣獲取網(wǎng)頁(yè)(例如使用HTTP),處理模塊負(fù)責(zé)怎樣處理頁(yè)面。標(biāo)準(zhǔn)處理模塊僅僅包括了解析頁(yè)面和抽取URL,其他處理模塊可以用來(lái)檢索文本頁(yè)面,或者搜集網(wǎng)絡(luò)數(shù)據(jù)

? WebFountain (Edwards et al., 2001)是一個(gè)與Mercator類(lèi)似的分布式的模塊化的爬蟲(chóng),但是使用C++編寫(xiě)的。它的特點(diǎn)是一個(gè)管理員機(jī)器控制一系列的螞蟻機(jī)器。經(jīng)過(guò)多次下載頁(yè)面后,頁(yè)面的變化率可以推測(cè)出來(lái),這時(shí),一個(gè)非線(xiàn)性的方法必須用于求解方程以獲得一個(gè)最大的新鮮度的訪(fǎng)問(wèn)策略。作者推薦在早期檢索階段使用這個(gè)爬蟲(chóng),然后用統(tǒng)一策略檢索,就是所有的頁(yè)面都使用相同的頻率訪(fǎng)問(wèn)。

? PolyBot [Shkapenyuk and Suel, 2002]是一個(gè)使用C++和Python編寫(xiě)的分布式網(wǎng)絡(luò)爬蟲(chóng)。它由一個(gè)爬蟲(chóng)管理者,一個(gè)或多個(gè)下載者,一個(gè)或多個(gè)DNS解析者組成。抽取到的URL被添加到硬盤(pán)的一個(gè)隊(duì)列里面,然后使用批處理的模式處理這些URL。平衡禮貌方面考慮到了第二、三級(jí)網(wǎng)域,因?yàn)榈谌?jí)網(wǎng)域通常也會(huì)保存在同一個(gè)網(wǎng)絡(luò)服務(wù)器上。

? WebRACE (Zeinalipour-Yazti and Dikaiakos, 2002)是一個(gè)使用java實(shí)現(xiàn)的,擁有檢索模塊和緩存模塊的爬蟲(chóng),它是一個(gè)很通用的稱(chēng)作eRACE的系統(tǒng)的一部分。系統(tǒng)從用戶(hù)得到下載頁(yè)面的請(qǐng)求,爬蟲(chóng)的行為有點(diǎn)像一個(gè)聰明的代理服務(wù)器。系統(tǒng)還監(jiān)視訂閱網(wǎng)頁(yè)的請(qǐng)求,當(dāng)網(wǎng)頁(yè)發(fā)生改變的時(shí)候,它必須使爬蟲(chóng)下載更新這個(gè)頁(yè)面并且通知訂閱者。WebRACE最大的特色是,當(dāng)大多數(shù)的爬蟲(chóng)都從一組URL開(kāi)始的時(shí)候,WebRACE可以連續(xù)地的接收抓取開(kāi)始的URL地址。

? Ubicrawer (Boldi et al., 2004)是一個(gè)使用java編寫(xiě)的分布式爬蟲(chóng)。它沒(méi)有中央程序。它由一組完全相同的代理組成,分配功能通過(guò)主機(jī)前后一致的散列計(jì)算進(jìn)行。這里沒(méi)有重復(fù)的頁(yè)面,除非爬蟲(chóng)崩潰了(然后,另外一個(gè)代理就會(huì)接替崩潰的代理重新開(kāi)始抓取)。爬蟲(chóng)設(shè)計(jì)為高伸縮性和允許失敗的。

? FAST Crawler (Risvik and Michelsen, 2002) 是一個(gè)分布式的爬蟲(chóng),在Fast Search&Transfer中使用,關(guān)于其體系結(jié)構(gòu)的一個(gè)大致的描述可以在[citation needed]找到。

? Labrador,一個(gè)工作在開(kāi)源項(xiàng)目Terrier Search Engine上的非開(kāi)源的爬蟲(chóng)。

? TeezirCrawler是一個(gè)非開(kāi)源的可伸縮的網(wǎng)頁(yè)抓取器,在Teezir上使用。該程序被設(shè)計(jì)為一個(gè)完整的可以處理各種類(lèi)型網(wǎng)頁(yè)的爬蟲(chóng),包括各種JavaScript和HTML文檔。爬蟲(chóng)既支持主題檢索也支持非主題檢索。

? Spinn3r, 一個(gè)通過(guò)博客構(gòu)建反饋信息的爬蟲(chóng)。 Spinn3r是基于java的,它的大部分的體系結(jié)構(gòu)都是開(kāi)源的。

? HotCrawler,一個(gè)使用c語(yǔ)言和php編寫(xiě)的爬蟲(chóng)。

? ViREL Microformats Crawler,搜索公眾信息作為嵌入到網(wǎng)頁(yè)的一小部分。

除了上面列出的幾個(gè)特定的爬蟲(chóng)結(jié)構(gòu)以外,還有Cho (Cho and Garcia-Molina, 2002)和Chakrabarti (Chakrabarti, 2003)發(fā)布的一般的爬蟲(chóng)體系結(jié)構(gòu)。

4.1 開(kāi)源爬蟲(chóng)

? DataparkSearch是一個(gè)在GNU GPL許可下發(fā)布的爬蟲(chóng)搜索引擎。

? GNU Wget是一個(gè)在GPL許可下,使用C語(yǔ)言編寫(xiě)的命令行式的爬蟲(chóng)。它主要用于網(wǎng)絡(luò)服務(wù)器和FTP服務(wù)器的鏡像

? Heritrix是一個(gè)互聯(lián)網(wǎng)檔案館級(jí)的爬蟲(chóng),設(shè)計(jì)的目標(biāo)為對(duì)大型網(wǎng)絡(luò)的大部分內(nèi)容的定期存檔快照,是使用java編寫(xiě)的。

? Ht://Dig在它和索引引擎中包括了一個(gè)網(wǎng)頁(yè)爬蟲(chóng)。

? HTTrack用網(wǎng)絡(luò)爬蟲(chóng)創(chuàng)建網(wǎng)絡(luò)站點(diǎn)鏡像,以便離線(xiàn)觀看。它使用C語(yǔ)言編寫(xiě),在GPL許可下發(fā)行。

? ICDL Crawler是一個(gè)用C++編寫(xiě),跨平臺(tái)的網(wǎng)絡(luò)爬蟲(chóng)。它僅僅使用空閑的CPU資源,在ICDL標(biāo)準(zhǔn)上抓取整個(gè)站點(diǎn)。

? JSpider是一個(gè)在GPL許可下發(fā)行的,高度可配置的,可定制的網(wǎng)絡(luò)爬蟲(chóng)引擎。

? LLarbin由Sebastien Ailleret開(kāi)發(fā);

? Webtools4larbin由Andreas Beder開(kāi)發(fā);

? Methabot是一個(gè)使用C語(yǔ)言編寫(xiě)的高速優(yōu)化的,使用命令行方式運(yùn)行的,在2-clause BSD許可下發(fā)布的網(wǎng)頁(yè)檢索器。它的主要的特性是高可配置性,模塊化;它檢索的目標(biāo)可以是本地文件系統(tǒng),HTTP或者FTP。

? Nutch是一個(gè)使用java編寫(xiě),在Apache許可下發(fā)行的爬蟲(chóng)。它可以用來(lái)連接Lucene的全文檢索套件;

? Pavuk是一個(gè)在GPL許可下發(fā)行的,使用命令行的WEB站點(diǎn)鏡像工具,可以選擇使用X11的圖形界面。與wget和httprack相比,他有一系列先進(jìn)的特性,如以正則表達(dá)式為基礎(chǔ)的文件過(guò)濾規(guī)則和文件創(chuàng)建規(guī)則。

? WebVac是斯坦福WebBase項(xiàng)目使用的一個(gè)爬蟲(chóng)。

? WebSPHINX(Miller and Bharat, 1998)是一個(gè)由java類(lèi)庫(kù)構(gòu)成的,基于文本的搜索引擎。它使用多線(xiàn)程進(jìn)行網(wǎng)頁(yè)檢索,html解析,擁有一個(gè)圖形用戶(hù)界面用來(lái)設(shè)置開(kāi)始的種子URL和抽取下載的數(shù)據(jù);

? WIRE-網(wǎng)絡(luò)信息檢索環(huán)境(Baeza-Yates 和 Castillo, 2002)是一個(gè)使用C++編寫(xiě),在GPL許可下發(fā)行的爬蟲(chóng),內(nèi)置了幾種頁(yè)面下載安排的策略,還有一個(gè)生成報(bào)告和統(tǒng)計(jì)資料的模塊,所以,它主要用于網(wǎng)絡(luò)特征的描述;

? LWP:RobotUA(Langheinrich,2004)是一個(gè)在Perl5許可下發(fā)行的,可以?xún)?yōu)異的完成并行任務(wù)的 Perl類(lèi)庫(kù)構(gòu)成的機(jī)器人。

? Web Crawler是一個(gè)為.net準(zhǔn)備的開(kāi)放源代碼的網(wǎng)絡(luò)檢索器(C#編寫(xiě))。

? Sherlock Holmes收集和檢索本地和網(wǎng)絡(luò)上的文本類(lèi)數(shù)據(jù)(文本文件,網(wǎng)頁(yè)),該項(xiàng)目由捷克門(mén)戶(hù)網(wǎng)站中樞(Czech web portal Centrum)贊助并且主用商用于這里;它同時(shí)也使用在。

? YaCy是一個(gè)基于P2P網(wǎng)絡(luò)的免費(fèi)的分布式搜索引擎(在GPL許可下發(fā)行);

? Ruya是一個(gè)在廣度優(yōu)先方面表現(xiàn)優(yōu)秀,基于等級(jí)抓取的開(kāi)放源代碼的網(wǎng)絡(luò)爬蟲(chóng)。在英語(yǔ)和日語(yǔ)頁(yè)面的抓取表現(xiàn)良好,它在GPL許可下發(fā)行,并且完全使用Python編寫(xiě)。按照robots.txt有一個(gè)延時(shí)的單網(wǎng)域延時(shí)爬蟲(chóng)。

? Universal Information Crawler快速發(fā)

詞條統(tǒng)計(jì)

  • 瀏覽次數(shù):1423
  • 編輯次數(shù):0次歷史版本
  • 最近更新:2017-04-23
  • 創(chuàng)建者:聚擎
  • 相關(guān)詞條

    相關(guān)問(wèn)答

    相關(guān)百科

    相關(guān)資訊