網(wǎng)絡(luò)蜘蛛設(shè)計(jì)研究論文

時(shí)間:2022-03-12 08:45:00

導(dǎo)語(yǔ):網(wǎng)絡(luò)蜘蛛設(shè)計(jì)研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

網(wǎng)絡(luò)蜘蛛設(shè)計(jì)研究論文

【摘要】網(wǎng)絡(luò)蜘蛛搜索策略的研究是近年來(lái)專業(yè)搜索引擎研究的焦點(diǎn)之一,如何使搜索引擎快速準(zhǔn)確地從龐大的網(wǎng)頁(yè)數(shù)據(jù)中獲取所需資源的需求是目前所面臨的重要問(wèn)題。本文重點(diǎn)闡述了搜索引擎的WebSpider(網(wǎng)絡(luò)蜘蛛)的搜索策略和搜索優(yōu)化措施,提出了一種簡(jiǎn)單的基于廣度優(yōu)先算法的網(wǎng)絡(luò)蜘蛛設(shè)計(jì)方案,并分析了設(shè)計(jì)過(guò)程中的優(yōu)化措施。

【關(guān)鍵詞】搜索引擎;網(wǎng)絡(luò)蜘蛛;搜索策略

0引言

近年來(lái),隨著Internet技術(shù)的廣泛應(yīng)用,傳統(tǒng)的通用搜索引擎,如Google、Fast、AltaVista和GoTo等正面臨巨大的挑戰(zhàn)。挑戰(zhàn)之一是Web信息資源呈指數(shù)級(jí)增長(zhǎng),搜索引擎無(wú)法索引所有頁(yè)面。據(jù)統(tǒng)計(jì),目前Web上靜態(tài)頁(yè)面的數(shù)量超過(guò)40億個(gè),而且這一數(shù)量還在以平均每天730萬(wàn)個(gè)頁(yè)面的速度遞增。在過(guò)去的幾年中,盡管各種通用搜索引擎在索引技術(shù)、索引數(shù)量上有所提高,但遠(yuǎn)遠(yuǎn)無(wú)法跟上Web本身的增長(zhǎng)速度,即使是目前全球最大的搜索引擎Google,其索引的頁(yè)面數(shù)量?jī)H占Web總量的40%;挑戰(zhàn)之二是Web信息資源的動(dòng)態(tài)變化,搜索引擎無(wú)法保證對(duì)信息的及時(shí)更新。近年來(lái)的研究表明,Web上的頁(yè)面平均50天就有約50%的頁(yè)面發(fā)生變化,而目前通用搜索引擎更新的時(shí)間至少需要數(shù)星期之久;挑戰(zhàn)之三是傳統(tǒng)的搜索引擎提供的信息檢索服務(wù),不能滿足人們?nèi)找嬖鲩L(zhǎng)的對(duì)個(gè)性化服務(wù)的需要。因此如何設(shè)計(jì)網(wǎng)絡(luò)蜘蛛(WebSpider)來(lái)更有效率的爬取互聯(lián)網(wǎng)上的內(nèi)容成為搜索引擎的一個(gè)首要問(wèn)題。在設(shè)計(jì)網(wǎng)絡(luò)蜘蛛時(shí),不僅需要充分考慮到爬取的效率和站點(diǎn)設(shè)置的靈活性還要確保系統(tǒng)的穩(wěn)定性。一個(gè)優(yōu)秀的搜索引擎,需要不斷的優(yōu)化網(wǎng)絡(luò)蜘蛛的算法,提升其性能。本文在分析網(wǎng)絡(luò)蜘蛛的工作原理的基礎(chǔ)上,提出了一種基于廣度優(yōu)先搜索算法的網(wǎng)絡(luò)蜘蛛的實(shí)現(xiàn),并對(duì)提高網(wǎng)絡(luò)蜘蛛搜索效率的相關(guān)看法。

由于不可能抓取所有的網(wǎng)頁(yè),有些網(wǎng)絡(luò)蜘蛛對(duì)一些不太重要的網(wǎng)站,設(shè)置了訪問(wèn)的層數(shù)。[2]例如,在上圖中,A為起始網(wǎng)頁(yè),屬于0層,B、C、D、E、F屬于第1層,G、H屬于第2層,I屬于第3層。如果網(wǎng)絡(luò)蜘蛛設(shè)置的訪問(wèn)層數(shù)為2的話,網(wǎng)頁(yè)I是不會(huì)被訪問(wèn)到的。這也讓有些網(wǎng)站上一部分網(wǎng)頁(yè)能夠在搜索引擎上搜索到,另外一部分不能被搜索到。對(duì)于網(wǎng)站設(shè)計(jì)者來(lái)說(shuō),扁平化的網(wǎng)站結(jié)構(gòu)設(shè)計(jì)有助于搜索引擎抓取其更多的網(wǎng)頁(yè)。網(wǎng)絡(luò)蜘蛛在訪問(wèn)網(wǎng)站網(wǎng)頁(yè)的時(shí)候,經(jīng)常會(huì)遇到加密數(shù)據(jù)和網(wǎng)頁(yè)權(quán)限的問(wèn)題,有些網(wǎng)頁(yè)是需要會(huì)員權(quán)限才能訪問(wèn)。當(dāng)然,網(wǎng)站的所有者可以通過(guò)協(xié)議讓網(wǎng)絡(luò)蜘蛛不去抓?。ㄏ滦」?jié)會(huì)介紹),但對(duì)于一些出售報(bào)告的網(wǎng)站,他們希望搜索引擎能搜索到他們的報(bào)告,但又不能完全免費(fèi)的讓搜索者查看,這樣就需要給網(wǎng)絡(luò)蜘蛛提供相應(yīng)的用戶名和密碼。網(wǎng)絡(luò)蜘蛛可以通過(guò)所給的權(quán)限對(duì)這些網(wǎng)頁(yè)進(jìn)行網(wǎng)頁(yè)抓取,從而提供搜索。而當(dāng)搜索者點(diǎn)擊查看該網(wǎng)頁(yè)的時(shí)候,同樣需要搜索者提供相應(yīng)的權(quán)限驗(yàn)證。

2網(wǎng)絡(luò)蜘蛛的設(shè)計(jì)

根據(jù)抓取過(guò)程,蜘蛛主要分為三個(gè)功能模塊,一個(gè)是網(wǎng)頁(yè)讀取模塊主要是用來(lái)讀取遠(yuǎn)程Web服務(wù)器上的網(wǎng)頁(yè)內(nèi)容,另一個(gè)是超鏈分析模塊,這個(gè)模塊主要是分析網(wǎng)頁(yè)中的超鏈接,將網(wǎng)頁(yè)上的所有超鏈接提取出來(lái),放入到待抓取URL列表中,再一個(gè)模塊就是內(nèi)容分析模塊,這個(gè)模塊主要是對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行分析,將網(wǎng)頁(yè)中所有超標(biāo)志去掉只留下網(wǎng)頁(yè)文字內(nèi)容。蜘蛛的主要工作流程如圖所示。

首先蜘蛛讀取抓取站點(diǎn)的URL列表,取出一個(gè)站點(diǎn)URL,將其放入未訪問(wèn)的URL列表(UVURL列表)中,如果UVURL不為空剛從中取出一個(gè)URL判斷是否已經(jīng)訪問(wèn)過(guò),若沒(méi)有訪問(wèn)過(guò)則讀取此網(wǎng)頁(yè),并進(jìn)行超鏈分析及內(nèi)容分析,并將些頁(yè)存入文檔數(shù)據(jù)庫(kù),并將些URL放入已訪問(wèn)URL列表(VURL列表),直到UVRL為空為止,此時(shí)再抓取其他站點(diǎn),依次循環(huán)直到所有的站點(diǎn)URL列表都抓取完為止。

為了提高網(wǎng)絡(luò)蜘蛛的抓取效率,需要引入以下技術(shù)。

(1)、多線程技術(shù):由于抓取的站點(diǎn)URL相當(dāng)多,采用單線程蜘蛛抓取時(shí)速度不夠,也不能滿足實(shí)際的需要。因而需要多線程技術(shù)來(lái)創(chuàng)建多個(gè)蜘蛛線程來(lái)同時(shí)抓取,以提高速度。

(2)、網(wǎng)頁(yè)抓?。壕W(wǎng)頁(yè)抓取是基于HTTP協(xié)議之上的,網(wǎng)頁(yè)上的資源有多種,有網(wǎng)頁(yè),有Word文檔也有其他類型的文件,這樣抓取時(shí)需要判斷URL所指向資源的類型。

(3)、超鏈分析:超鏈分析是一個(gè)比較重要的環(huán)節(jié),需要對(duì)HTML的各種標(biāo)志(tag)有一個(gè)很全面的了解。需要反復(fù)測(cè)試,考慮各種情形的發(fā)生。

超鏈分析時(shí)從網(wǎng)頁(yè)里提取出來(lái)的是相對(duì)于當(dāng)前頁(yè)的相對(duì)URL,因而需要根據(jù)當(dāng)前頁(yè)的絕對(duì)URL將提取的這個(gè)URL轉(zhuǎn)換成絕對(duì)URL。在此過(guò)程中需要根據(jù)ParentURL(就是當(dāng)前頁(yè)的URL)作出各種判斷。

3改進(jìn)方法

商業(yè)化的蜘蛛需要抓取上億的網(wǎng)頁(yè),因而抓取速度是一個(gè)關(guān)鍵,另外蜘蛛需要自動(dòng)運(yùn)行,盡是減少人工的參與,因而系統(tǒng)的性能也是一個(gè)很重要的關(guān)鍵,系統(tǒng)能夠在發(fā)生異常的時(shí)候自動(dòng)進(jìn)行處理,防止程序的退出和死機(jī)。[3]有一些細(xì)節(jié)需要注意:

系統(tǒng)應(yīng)該使用多線程,使用多個(gè)蜘蛛同時(shí)抓取,在可能的情況下,最好是做成分布式的蜘蛛程序,蜘蛛應(yīng)該分布地網(wǎng)絡(luò)上多臺(tái)服務(wù)器上協(xié)同抓取網(wǎng)頁(yè),這樣速度會(huì)更快,更符合我們的實(shí)際應(yīng)用。

對(duì)于同一網(wǎng)站的網(wǎng)頁(yè)應(yīng)該采用同一個(gè)HttpConnection這樣有效地節(jié)省創(chuàng)建一個(gè)連接的時(shí)間,另外對(duì)于抓取的URL采用域名緩沖機(jī)制(可在網(wǎng)關(guān)一級(jí)上實(shí)現(xiàn)),這樣抓取時(shí)減少由域名到IP地址的轉(zhuǎn)換時(shí)間以及重復(fù)的域名轉(zhuǎn)換。若能做到這一步將會(huì)大大減少抓取時(shí)間,因?yàn)樵L問(wèn)一URL時(shí)每次都要進(jìn)行域名到主機(jī)IP地址的轉(zhuǎn)換。

最好是能夠?qū)⒆x取網(wǎng)頁(yè)、超鏈分析及網(wǎng)頁(yè)內(nèi)容分析三部分分開(kāi)來(lái)做,讓它們并行協(xié)同工作,這樣效率會(huì)更高。因?yàn)樵谶@三個(gè)過(guò)程中網(wǎng)頁(yè)讀取比起其他兩個(gè)功能來(lái)說(shuō)是一個(gè)長(zhǎng)任務(wù),最耗時(shí)間。當(dāng)抓取完一網(wǎng)頁(yè)后,在抓取下一網(wǎng)頁(yè)的時(shí)候讓去執(zhí)行超鏈分析和內(nèi)容分析。這樣在下一網(wǎng)頁(yè)抓取完成之前超鏈分析和內(nèi)容分析任務(wù)就能完成,抓取任務(wù)不會(huì)延遲,這樣節(jié)省了一些時(shí)間。

4結(jié)束語(yǔ)

隨著人們對(duì)“個(gè)性化”信息服務(wù)需要的日益增長(zhǎng),專業(yè)搜索引擎的發(fā)展將成為搜索引擎發(fā)展的主要趨勢(shì)之一。[4]網(wǎng)絡(luò)蜘蛛搜索策略問(wèn)題的研究,對(duì)專業(yè)搜索引擎的應(yīng)用與發(fā)展具有重要意義。本文對(duì)現(xiàn)有的網(wǎng)絡(luò)蜘蛛搜索策略進(jìn)行了簡(jiǎn)單的介紹和分析,提出了一種基于廣度優(yōu)先搜索網(wǎng)絡(luò)蜘蛛設(shè)計(jì)方案。提出了提高網(wǎng)絡(luò)蜘蛛效率的幾種方法。目前的網(wǎng)絡(luò)蜘蛛通常采用“固定的”搜索策略,缺乏適應(yīng)性,如何提高網(wǎng)絡(luò)蜘蛛的自適應(yīng)性有待進(jìn)一步研究??傊?,網(wǎng)絡(luò)蜘蛛搜索策略問(wèn)題的研究還處于發(fā)展階段,無(wú)論是模型、搜索算法,還是實(shí)驗(yàn)方法都還有

許多有待解決的問(wèn)題。