搜索引擎蜘蛛簡(jiǎn)稱網(wǎng)絡(luò)爬蟲(chóng)(webcrawler),網(wǎng)絡(luò)爬蟲(chóng)(又被稱為網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者),是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動(dòng)索引、模擬程序或者蠕蟲(chóng)。
搜索引擎蜘蛛產(chǎn)生的背景
隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。搜索引擎(SearchEngine),例如傳統(tǒng)的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個(gè)輔助人們檢索信息的工具成為用戶訪問(wèn)萬(wàn)維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性,如:
(1)不同領(lǐng)域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶不關(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ǔ)義信息提出的查詢。
為了解決上述問(wèn)題,定向抓取相關(guān)網(wǎng)頁(yè)資源的聚焦爬蟲(chóng)應(yīng)運(yùn)而生。聚焦爬蟲(chóng)是一個(gè)自動(dòng)下載網(wǎng)頁(yè)的程序,它根據(jù)既定的抓取目標(biāo),有選擇的訪問(wèn)萬(wàn)維網(wǎng)上的網(wǎng)頁(yè)與相關(guān)的鏈接,獲取所需要的信息。與通用爬蟲(chóng)(generalpurposewebcrawler)不同,聚焦爬蟲(chóng)并不追求大的覆蓋,而將目標(biāo)定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁(yè),為面向主題的用戶查詢準(zhǔn)備數(shù)據(jù)資源。
聚焦爬蟲(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ì)列,直到滿足系統(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ò)濾,并建立索引,以便之后的查詢和檢索;對(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è)面的存在:客戶端、服務(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ǔ)。
為提高爬行效率,爬蟲(chóng)需要在單位時(shí)間內(nèi)盡可能多的獲取高質(zhì)量頁(yè)面,是它面臨的難題之一。當(dāng)前有五種表示頁(yè)面質(zhì)量高低的方式:Similarity(頁(yè)面與爬行主題之間的相似度)、Backlink(頁(yè)面在Web圖中的入度大小)、PageRank(指向它的所有頁(yè)面平均權(quán)值之和)、Forwardlink(頁(yè)面在Web圖中的出度大小)、Location(頁(yè)面的信息位置);Parallel(并行性問(wèn)題)[3]。為了提高爬行速度,網(wǎng)絡(luò)通常會(huì)采取并行爬行的工作方式,隨之引入了新的問(wèn)題:重復(fù)性(并行運(yùn)行的爬蟲(chóng)或爬行線程同時(shí)運(yùn)行時(shí)增加了重復(fù)頁(yè)面)、質(zhì)量問(wèn)題(并行運(yùn)行時(shí),每個(gè)爬蟲(chóng)或爬行線程只能獲取部分頁(yè)面,導(dǎo)致頁(yè)面質(zhì)量下降)、通信帶寬代價(jià)(并行運(yùn)行時(shí),各個(gè)爬蟲(chóng)或爬行線程之間不可避免要進(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))。