簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)

簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)

ID:25130357

大?。?4.00 KB

頁數(shù):6頁

時(shí)間:2018-11-18

簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)_第1頁
簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)_第2頁
簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)_第3頁
簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)_第4頁
簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)_第5頁
資源描述:

《簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)簡析搜索引擎的網(wǎng)絡(luò)爬蟲技術(shù)  1網(wǎng)絡(luò)爬蟲技術(shù)  網(wǎng)絡(luò)爬蟲也稱為文檔抽取系統(tǒng),是構(gòu)成第三代搜索引擎系統(tǒng)的重要組成部分之一,主要由文檔適配器與信息爬行器組成,文檔適配器能夠處理不同類型的文檔,信息爬行器主要進(jìn)行頁面信息的收集工作,文檔抽取子系統(tǒng)首先根據(jù)配置文件的約定,定時(shí)產(chǎn)生信息爬行器對分布在網(wǎng)絡(luò)上的信息節(jié)點(diǎn)進(jìn)行遍歷,然后調(diào)用對應(yīng)的文檔適配器來抽取網(wǎng)絡(luò)文檔信息。文檔適配器能夠抽取的頁面文件種類繁多,能夠?qū)Ω鞣N類型的文檔以及多媒體文本信息等。信息爬行器為計(jì)算機(jī)程序的一個(gè)進(jìn)程或線程,通常采用并發(fā)工作方式,以便

2、能可能多、周期盡可能短地搜集網(wǎng)絡(luò)節(jié)點(diǎn)的頁面信息,同時(shí)還要避免死鏈接或無效鏈接。信息爬行器一般采用分布式并行計(jì)算技術(shù)來提高工作的廣度與速度?! ?圖的遍歷算法  網(wǎng)絡(luò)爬蟲在網(wǎng)絡(luò)中執(zhí)行信息收集的過程實(shí)際上就是一種圖的遍歷。圖的遍歷算法通常有兩種方式:即廣度優(yōu)先算法與深度優(yōu)先算法。下面就具體介紹一下兩種算法?! ⊥ǔI疃葍?yōu)先算法使用的數(shù)據(jù)結(jié)構(gòu)為棧,通過棧的出入特點(diǎn)進(jìn)行搜索,其過程首先從該圖的某個(gè)頂點(diǎn)或者子圖出發(fā),將所有屬本文由.L.收集整理于該子圖的頂點(diǎn)信息的鏈接地址(即URL,UniversalResourceLocator)進(jìn)行

3、壓棧操作,待所有頂點(diǎn)都操作完成后,然后將棧頂?shù)脑厝〕?,根?jù)該元素的URL,訪問該元素URL所指向的網(wǎng)絡(luò),然后將該頁面的信息進(jìn)行收集與分析,從而得到該頁面內(nèi)部的所有的URL連接信息,再將該頁面所有的連接信息進(jìn)行壓棧,從而按照圖的廣度將圖上所有的鏈接進(jìn)行展開操作,重復(fù)這些步驟就可以對圖進(jìn)行深度搜索遍歷,達(dá)到遍歷收集所有互聯(lián)網(wǎng)信息資源的目的?! ∩疃葍?yōu)先搜索算法在展開頁面鏈接時(shí)總是從棧頂進(jìn)行展開,因此隨著時(shí)間的增加,棧的深度也在不斷增加,位于底部的元素可能會(huì)長時(shí)間不能進(jìn)行處理,從而造成該算法陷入一個(gè)大的頁面而不能繼續(xù)展開遍歷。為了

4、避免這一問題,可以采用廣度優(yōu)先搜索算法,廣度優(yōu)先搜索算法是通過隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行展開的,根據(jù)各個(gè)元素節(jié)點(diǎn)距離最初節(jié)點(diǎn)的層次對所有的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行遍歷,從而對每個(gè)節(jié)點(diǎn)都能夠在訪問全網(wǎng)一次的時(shí)間內(nèi)進(jìn)行公平處理,克服了深度優(yōu)先算法陷入局部節(jié)點(diǎn)的不足,也保證了不會(huì)漏掉隊(duì)列后面的的元素,從而達(dá)到了公平對待互聯(lián)網(wǎng)上所有節(jié)點(diǎn)資源的目的?! ≡趶V度優(yōu)先算法中,根據(jù)是否已經(jīng)對節(jié)點(diǎn)進(jìn)行訪問,將爬行隊(duì)列構(gòu)造為兩部分:即待爬行隊(duì)列與已爬行隊(duì)列。待爬行隊(duì)列主要存儲(chǔ)需要進(jìn)行訪問的元素節(jié)點(diǎn)URL,而URL在隊(duì)列中的先后順序則體現(xiàn)了算法的爬行策略。而已爬行隊(duì)

5、列則主要存儲(chǔ)已經(jīng)訪問過的URL,由于該隊(duì)列的長度隨著時(shí)間的增加不斷增長,因此需要優(yōu)化該隊(duì)列的插入與查詢操作;在網(wǎng)絡(luò)爬蟲的爬行過程中,不論是帶爬行隊(duì)列還是已爬行隊(duì)列,都需要頻繁進(jìn)行插入與查詢操作。因此,該隊(duì)列數(shù)據(jù)結(jié)構(gòu)的性能會(huì)直接影響搜索引擎的搜集性能?! ε佬衅鱽碚f,網(wǎng)頁的采集與解析是核心工作。而爬行程序是否高效,主要取決于網(wǎng)頁采集的效率。其過程分為5個(gè)步驟:  1)將待爬行隊(duì)列的第一個(gè)元素取出;  2)訪問DNS服務(wù)器,對URL進(jìn)行域名解析;  3)根據(jù)ROBOT網(wǎng)絡(luò)協(xié)議,獲取該URL服務(wù)器的權(quán)限;  4)若得到訪問權(quán)限,則

6、對服務(wù)器發(fā)出URL請求;  5)通過HTTP協(xié)議進(jìn)行訪問?! 【W(wǎng)絡(luò)爬蟲在工作時(shí),若頻繁訪問DNS服務(wù)器,可能會(huì)造成比較繁重的網(wǎng)絡(luò)負(fù)擔(dān),引起服務(wù)器響應(yīng)以及網(wǎng)絡(luò)延遲,會(huì)降低爬行程序的效率。因此,通常在本地服務(wù)器上建立一個(gè)DNS緩存來降低對DNS服務(wù)器的訪問頻率。同時(shí),為了提高爬行程序的效率,通常采用多線程或者多進(jìn)程來對網(wǎng)頁采集程序進(jìn)行流水線處理,多線程與多進(jìn)程程序設(shè)計(jì)相對比較復(fù)雜,需要解決的問題主要是進(jìn)程的同步和互斥;也就是解決多個(gè)線程或進(jìn)程共享資源的問題。造成死鎖的情況通常是占有一個(gè)資源然后又請求另一資源,因此,若系統(tǒng)只存在一個(gè)

7、共享資源就不會(huì)造成會(huì)死鎖。為了解決餓死問題,通常只采用一個(gè)等待對列,若待爬行隊(duì)列處于使用狀態(tài),則將要訪問該隊(duì)列的線程插入等待隊(duì)列。而隊(duì)列的特點(diǎn)能夠保證了所有的等待線程都公平對待,從而解決了餓死問題。具體算法如下:  1)對爬行隊(duì)列上鎖。若爬行隊(duì)列已經(jīng)上鎖,則將該線程或進(jìn)程插入等待對列?! ?)取出待爬行隊(duì)列的URL元素?! ?)對爬行隊(duì)列解鎖,然后喚醒下一個(gè)進(jìn)程或線程?! ?)訪問頁面,將頁面中的URL進(jìn)行解析?! ?)對爬行隊(duì)列上鎖。如爬行隊(duì)列已上鎖,則插入等待對列?! ?)將步驟4)得到的URL插入對列?! ?)對爬行隊(duì)列

8、解鎖,喚醒下一個(gè)進(jìn)程或線程。  8)重復(fù)1)7)直到結(jié)束。  3頁面解析  在解決了互聯(lián)網(wǎng)節(jié)點(diǎn)頁面遍歷的問題后,網(wǎng)絡(luò)爬蟲剩下的工作就是頁面解析,頁面解析主要是分析與理解HTML(超文本標(biāo)記語言)文檔。HTML作為一種標(biāo)記語言,能夠?qū)ヂ?lián)網(wǎng)節(jié)點(diǎn)的頁面外觀進(jìn)行標(biāo)準(zhǔn)化處理,從而規(guī)范

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。