資源描述:
《基于p2p分布式的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、基于P2P分布式的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)摘要:未解決傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)的在擴(kuò)展性、容錯(cuò)性和低效性,提出一種基于P2P的分布式網(wǎng)絡(luò)爬蟲(chóng)。分布式網(wǎng)絡(luò)爬蟲(chóng)通過(guò)爬蟲(chóng)協(xié)調(diào)節(jié)點(diǎn)提高網(wǎng)絡(luò)爬蟲(chóng)的爬取數(shù)據(jù)的效率和擴(kuò)展性。本文首先介紹了傳統(tǒng)的網(wǎng)絡(luò)爬蟲(chóng)的原理,在此原理的基礎(chǔ)上對(duì)其進(jìn)行了改進(jìn),分析了分布式網(wǎng)絡(luò)爬蟲(chóng)的結(jié)構(gòu)設(shè)計(jì),均衡負(fù)載策略和通信策略,從而提高網(wǎng)絡(luò)爬蟲(chóng)的容錯(cuò)性。關(guān)鍵字網(wǎng)絡(luò)爬蟲(chóng)P2P分布式負(fù)載策略通信策略1.引言Web資源是當(dāng)今社會(huì)中獲取資源重要途徑之一,隨著信息爆炸性增長(zhǎng),人們對(duì)信息資源的需求也越來(lái)越大,如何使用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)高效的爬取Web中的數(shù)據(jù)成為了一
2、個(gè)嚴(yán)峻的問(wèn)題?由于傳統(tǒng)的網(wǎng)絡(luò)爬蟲(chóng)的擴(kuò)展性和容錯(cuò)性比較差,因此在很多方面已經(jīng)無(wú)法勝任高效爬取的任務(wù)。由于Web信息具有分布式的特性,因此將網(wǎng)絡(luò)爬蟲(chóng)采取分布式的方式進(jìn)行設(shè)計(jì)可以大大提高爬取數(shù)據(jù)的效率。分布式的網(wǎng)絡(luò)爬蟲(chóng)可以借助普通PC用戶提供的空閑資源來(lái)獲取網(wǎng)絡(luò),可以降低爬取數(shù)據(jù)的成本,減少對(duì)網(wǎng)絡(luò)造成的負(fù)擔(dān)。設(shè)計(jì)一個(gè)分布式的網(wǎng)絡(luò)爬蟲(chóng)首要了解傳統(tǒng)的網(wǎng)絡(luò)爬蟲(chóng)爬取數(shù)據(jù)的原理,在其基礎(chǔ)上進(jìn)行改進(jìn)和優(yōu)化。本文詳細(xì)介紹了分布式系統(tǒng)中常見(jiàn)的幾種結(jié)構(gòu),并以P2P結(jié)構(gòu)為例,說(shuō)明了如何對(duì)資源的分配策略已達(dá)到每個(gè)節(jié)點(diǎn)的公平性,同時(shí)介紹了節(jié)點(diǎn)間的通信協(xié)議如何
3、保證分布式網(wǎng)絡(luò)爬蟲(chóng)的良好容錯(cuò)性和擴(kuò)展性。2.傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)2.1工作原理網(wǎng)絡(luò)爬蟲(chóng)是一個(gè)Web程序,按照某種規(guī)則自動(dòng)爬取萬(wàn)維網(wǎng)中的Web頁(yè)面,將爬取到的網(wǎng)頁(yè)中的關(guān)鍵字存入關(guān)鍵字?jǐn)?shù)據(jù)庫(kù)中,用戶通過(guò)搜索引擎或許相關(guān)信息的頁(yè)面。傳統(tǒng)的網(wǎng)絡(luò)爬蟲(chóng)由帶爬取的URL庫(kù)、未爬取的URL庫(kù)、爬蟲(chóng)主題線程模塊和內(nèi)容提取模塊組成。其工作原理如圖1,網(wǎng)絡(luò)爬蟲(chóng)從一個(gè)或若干個(gè)初始網(wǎng)頁(yè)的URl開(kāi)始,通過(guò)爬蟲(chóng)主題線程模塊從萬(wàn)維網(wǎng)中獲得初始網(wǎng)頁(yè)上的URL和網(wǎng)頁(yè)信息,將新獲取的URL存放在待爬取的URL隊(duì)列中,將獲取到的網(wǎng)頁(yè)信息傳給內(nèi)容提取模塊,內(nèi)容提取模塊將訪問(wèn)過(guò)的
4、URL存入已爬行URL庫(kù)中,將網(wǎng)頁(yè)信息存入頁(yè)面信息庫(kù)中,直到滿足一定停止條件。通過(guò)一定的網(wǎng)頁(yè)過(guò)濾算法過(guò)濾掉與主題無(wú)關(guān)URL,遵循一定的調(diào)度策略從帶爬取隊(duì)列中選擇下一次要抓取的URL。內(nèi)容提取模塊Internet頁(yè)面
信息庫(kù)已訪問(wèn)URL網(wǎng)頁(yè)信息頁(yè)面中連接URLURLURL未爬行URL種子庫(kù)爬蟲(chóng)主題線程模塊已爬行URL種子庫(kù)圖1:傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)原理2.2網(wǎng)頁(yè)抓取策略網(wǎng)頁(yè)抓取策略可以分為三類(lèi)抓取策略,分別是深度優(yōu)先,廣度優(yōu)先和最佳優(yōu)先,深度優(yōu)先策略容易使網(wǎng)絡(luò)爬蟲(chóng)陷入問(wèn)題,因此較為常用的是廣度優(yōu)先和最佳優(yōu)先策略。1.深度優(yōu)先深度優(yōu)先從初始
5、的URL頁(yè)面開(kāi)始,通過(guò)一定的規(guī)則從初始URL庫(kù)中選擇一個(gè)URL,分析這個(gè)網(wǎng)頁(yè)中的其他URL,選擇一個(gè)再進(jìn)入。如此一個(gè)鏈接一個(gè)鏈接地抓取下去,直到處理完一條線路為止然后再處理下一個(gè)URL。深度優(yōu)先策略設(shè)計(jì)比較簡(jiǎn)單,但是一個(gè)門(mén)戶網(wǎng)站中提供的連接的重要性隨著層次的深入逐級(jí)降低,從而使過(guò)度深入抓取的網(wǎng)頁(yè)的價(jià)值過(guò)低,因此深度優(yōu)先策略直接影響了抓取效率與抓取命中率。2.廣度優(yōu)先廣度優(yōu)先是先對(duì)初始的所有URL網(wǎng)頁(yè)進(jìn)行抓取,然后通過(guò)網(wǎng)頁(yè)過(guò)濾策略選取其中一個(gè)鏈接的網(wǎng)頁(yè),繼續(xù)抓取這個(gè)網(wǎng)頁(yè)中的所有URL鏈接網(wǎng)頁(yè),這樣逐層進(jìn)行抓取。由于初始URL在一定
6、鏈接距離內(nèi)的網(wǎng)頁(yè)是具有主題相關(guān)性的概率很大,但是隨著抓取網(wǎng)頁(yè)的增多,大量的無(wú)關(guān)網(wǎng)頁(yè)將被下載并過(guò)濾,算法的效率將變低。3.最佳優(yōu)先策略根據(jù)機(jī)器學(xué)習(xí)的一些算法提供一種網(wǎng)頁(yè)分析算法,對(duì)初始的URL進(jìn)行與要獲取主題的相關(guān)性評(píng)估,選取評(píng)估最好的一個(gè)或幾個(gè)URL進(jìn)行抓取。它只訪問(wèn)進(jìn)過(guò)網(wǎng)頁(yè)分析算法預(yù)測(cè)為“有用”的網(wǎng)頁(yè)。這種算法的優(yōu)點(diǎn)在于可以提高網(wǎng)頁(yè)的爬取效率,但是卻容易忽略被過(guò)濾到的URL網(wǎng)頁(yè)路徑中與主題相關(guān)的頁(yè)面,因此最佳優(yōu)先策略是一種局部的抓取算法,在使用的過(guò)程要通過(guò)一定的優(yōu)化使其能跳出局部最優(yōu)點(diǎn)。3.分布式網(wǎng)絡(luò)爬蟲(chóng)由于傳統(tǒng)的網(wǎng)絡(luò)爬蟲(chóng)是使
7、用集中方式來(lái)實(shí)現(xiàn)的,由于其擴(kuò)展性和容錯(cuò)性較差,在這個(gè)以大數(shù)據(jù)為背景的時(shí)代已經(jīng)不能滿足用戶對(duì)數(shù)據(jù)的需求,分布式技術(shù)能夠最快的搜索大量網(wǎng)頁(yè),因此分布式的網(wǎng)絡(luò)爬蟲(chóng)已經(jīng)逐漸成為了網(wǎng)絡(luò)爬蟲(chóng)的一個(gè)發(fā)展方向。3.1現(xiàn)狀分析分布式網(wǎng)絡(luò)爬蟲(chóng)在當(dāng)今社會(huì)已經(jīng)有了比較廣泛的應(yīng)用,例如Google和百度所使用的網(wǎng)絡(luò)爬蟲(chóng)就采用了分布式系統(tǒng),但是由于涉及商業(yè)機(jī)密,因此很少的想關(guān)信息進(jìn)行交流,目前國(guó)外使用較多的分布式爬蟲(chóng)有Mercator、GoogleCrawler、UbiCrwaler、InternetArchiveCrawler等,國(guó)內(nèi)比較著名的是WebG
8、ather。Google的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)是一臺(tái)中央主機(jī)和三臺(tái)負(fù)責(zé)爬蟲(chóng)的機(jī)器,并且這三臺(tái)機(jī)器只與中央主機(jī)通信。中央主機(jī)從一個(gè)文件系統(tǒng)中讀取URL,并把它們分給其它機(jī)器的爬蟲(chóng)進(jìn)程中。爬蟲(chóng)采用異步I/O同時(shí)從三百個(gè)網(wǎng)站上獲取數(shù)據(jù)。所有爬蟲(chóng)將下載下來(lái)的頁(yè)面壓縮并存儲(chǔ)