| 或者從事軟件開(kāi)發(fā)的人員都知道搜索引擎這個(gè)東西,國(guó)內(nèi)的知名搜索引擎大概也就只有百度了,俗話說(shuō)“有事找度娘”,這句話就是說(shuō)百度的強(qiáng)大之處,你可以通過(guò)搜索來(lái)獲取自己想要的任何東西,因?yàn)榛ヂ?lián)網(wǎng)的存在就是詮釋了‘我為人人,人人為我’的這個(gè)意義! 當(dāng)然了,想要獲取自己搜索的東西就要有人來(lái)提供,那么別人提供之后,怎么才能展現(xiàn)在我們面前呢,這就需要搜索引擎的爬蟲技術(shù)了------百度蜘蛛。 網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者),是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動(dòng)索引、模擬程序或者蠕蟲。 隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。搜索引擎(Search Engine),例如傳統(tǒng)的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個(gè)輔助人們檢索信息的工具成為用戶訪問(wèn)萬(wàn)維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性。為了解決上述問(wèn)題,定向抓取相關(guān)網(wǎng)頁(yè)資源的聚焦爬蟲應(yīng)運(yùn)而生。聚焦爬蟲是一個(gè)自動(dòng)下載網(wǎng)頁(yè)的程序,它根據(jù)既定的抓取目標(biāo),有選擇的訪問(wèn)萬(wàn)維網(wǎng)上的網(wǎng)頁(yè)與相關(guān)的鏈接,獲取所需要的信息。與通用爬蟲(general purpose web crawler)不同,聚焦爬蟲并不追求大的覆蓋,而將目標(biāo)定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁(yè),為面向主題的用戶查詢準(zhǔn)備數(shù)據(jù)資源。 1 聚焦爬蟲工作原理以及關(guān)鍵技術(shù)概述 網(wǎng)絡(luò)爬蟲是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從萬(wàn)維網(wǎng)上下載網(wǎng)頁(yè),是搜索引擎的重要組成。傳統(tǒng)爬蟲從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢和檢索;對(duì)于聚焦爬蟲來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。 面臨的問(wèn)題 截止到 2007 年底,Internet 上網(wǎng)頁(yè)數(shù)量超出 160 億個(gè),研究表明接近 30%的頁(yè)面是重復(fù)的;動(dòng)態(tài)頁(yè)面的存在:客戶端、服務(wù)器端腳本語(yǔ)言的應(yīng)用使得指向相同 Web 信息的 URL 數(shù)量呈指數(shù)級(jí)增長(zhǎng)。 上述特征使得網(wǎng)絡(luò)爬蟲面臨一定的困難,主要體現(xiàn)在 Web 信息的巨大容量使得爬蟲在給定時(shí)間內(nèi)只能下載少量網(wǎng)頁(yè)。 Lawrence 和 Giles 的研究表明沒(méi)有哪個(gè)搜索引擎能夠索引超出 16%的Internet 上 Web 頁(yè)面,即使能夠提取全部頁(yè)面,也沒(méi)有足夠的空間來(lái)存儲(chǔ)[1] 。 為提高爬行效率,爬蟲需要在單位時(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)行的爬蟲或爬行線程同時(shí)運(yùn)行時(shí)增加了重復(fù)頁(yè)面)、質(zhì)量問(wèn)題(并行運(yùn)行時(shí),每個(gè)爬蟲或爬行線程只能獲取部分頁(yè)面,導(dǎo)致頁(yè)面質(zhì)量下降)、通信帶寬代價(jià)(并行運(yùn)行時(shí),各個(gè)爬蟲或爬行線程之間不可避免要進(jìn)行一些通信)。 并行運(yùn)行時(shí),網(wǎng)絡(luò)爬蟲通常采用三種方式:獨(dú)立方式(各個(gè)爬蟲獨(dú)立爬行頁(yè)面,互不通信)、動(dòng)態(tài)分配方式(由一個(gè)中央?yún)f(xié)調(diào)器動(dòng)態(tài)協(xié)調(diào)分配 URL 給各個(gè)爬蟲)、靜態(tài)分配方式(URL 事先劃分給各個(gè)爬蟲)。 抓取目標(biāo)分類 抓取目標(biāo)的描述和定義是決定網(wǎng)頁(yè)分析算法與URL搜索策略如何制訂的基礎(chǔ)。而網(wǎng)頁(yè)分析算法和候選URL排序算法是決定搜索引擎所提供的服務(wù)形式和爬蟲網(wǎng)頁(yè)抓取行為的關(guān)鍵所在。這兩個(gè)部分的算法又是緊密相關(guān)的。 現(xiàn)有聚焦爬蟲對(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ǔ)并索引的對(duì)象一般為網(wǎng)站或網(wǎng)頁(yè)。根據(jù)種子樣本獲取方式可分為: (1) 預(yù)先給定的初始抓取種子樣本; (2) 預(yù)先給定的網(wǎng)頁(yè)分類目錄和與分類目錄對(duì)應(yīng)的種子樣本,如Yahoo!分類結(jié)構(gòu)等; (3) 通過(guò)用戶行為確定的抓取目標(biāo)樣例,分為: (a) 用戶瀏覽過(guò)程中顯示標(biāo)注的抓取樣本; (b) 通過(guò)用戶日志挖掘得到訪問(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ù)模式的爬蟲針對(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)致爬蟲的陷入(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)用于聚焦爬蟲中。其基本思想是認(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)行抓取。它只訪問(wèn)經(jīng)過(guò)網(wǎng)頁(yè)分析算法預(yù)測(cè)為“有用”的網(wǎng)頁(yè)。存在的一個(gè)問(wèn)題是,在爬蟲抓取路徑上的很多相關(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è)鏈接地抓取下去,直到處理完一條路線之后再處理下一條路線。深度優(yōu)先策略設(shè)計(jì)較為簡(jiǎn)單。然而門戶網(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ì)于其他兩種策略而言。此種策略很少被使用。 | |