[點(diǎn)晴CRM客戶(hù)管理系統(tǒng)]搜索引擎爬蟲(chóng)工作原理-大揭秘
搜索引擎的處理對(duì)象是互聯(lián)網(wǎng)網(wǎng)頁(yè),日前網(wǎng)頁(yè)數(shù)量以百億計(jì),所以搜索引擎首先面臨的問(wèn)題就是:如何能夠設(shè)計(jì)出高效的下載系統(tǒng),以將如此海量的網(wǎng)頁(yè)數(shù)據(jù)傳送到本地,在本地形成互聯(lián)網(wǎng)網(wǎng)頁(yè)的鏡像備份。 網(wǎng)絡(luò)爬蟲(chóng)即起此作用,它是搜索引擎系統(tǒng)中很關(guān)鍵也根基礎(chǔ)的構(gòu)件。這里主要介紹與網(wǎng)絡(luò)爬蟲(chóng)相關(guān)的技術(shù),盡管爬蟲(chóng)技術(shù)經(jīng)過(guò)幾十年的發(fā)展,從整體框架上已相對(duì)成熟,但隨著聯(lián)網(wǎng)的不斷發(fā)展,也面臨著一些有挑戰(zhàn)性的新問(wèn)題。 下圖所示是一個(gè)通用的爬蟲(chóng)框架流程。首先從互聯(lián)網(wǎng)頁(yè)面中精心選擇一部分網(wǎng)頁(yè),以這些網(wǎng)頁(yè)的鏈接地址作為種子URL,將這些種子URL放入待抓取URL隊(duì)列中,爬蟲(chóng)從待抓取URL隊(duì)列依次讀取,并將URL通過(guò)DNS解析,把鏈接地址轉(zhuǎn)換為網(wǎng)站服務(wù)器對(duì)應(yīng)的IP地址。 然后將其和網(wǎng)頁(yè)相對(duì)路徑名稱(chēng)交給網(wǎng)頁(yè)下載器,網(wǎng)頁(yè)下載器負(fù)責(zé)頁(yè)面內(nèi)容的下載。對(duì)于下載到本地的網(wǎng)頁(yè),一方面將其存儲(chǔ)到頁(yè)面庫(kù)中,等待建立索引等后續(xù)處理;另一方面將下載網(wǎng)頁(yè)的URL放入已抓取URL隊(duì)列中,這個(gè)隊(duì)列記載了爬蟲(chóng)系統(tǒng)已經(jīng)下載過(guò)的網(wǎng)頁(yè)URL,以避免網(wǎng)頁(yè)的重復(fù)抓取。對(duì)于剛下載的網(wǎng)頁(yè),從中抽取出所包含的所有鏈接信息,并在已抓取URL隊(duì)列中檢查,如果發(fā)現(xiàn)鏈接還沒(méi)有被抓取過(guò),則將這個(gè)URL放入待抓取URL隊(duì)列末尾,在之后的抓取調(diào)度中會(huì)下載這個(gè)URL對(duì)應(yīng)的網(wǎng)頁(yè)。如此這般,形成循環(huán),直到待抓取URL隊(duì)列為審,這代表著爬蟲(chóng)系統(tǒng)已將能夠抓取的網(wǎng)頁(yè)盡數(shù)抓完,此時(shí)完成了一輪完整的抓取過(guò)程。 對(duì)于爬蟲(chóng)來(lái)說(shuō),往往還需要進(jìn)行網(wǎng)頁(yè)去重及網(wǎng)頁(yè)反作弊。 上述是一個(gè)通用爬蟲(chóng)的整體流程,如果從更加宏觀的角度考慮,處于動(dòng)態(tài)抓取過(guò)程中的爬蟲(chóng)和互聯(lián)網(wǎng)所有網(wǎng)頁(yè)之間的關(guān)系,可以大致像如圖2-2所身那樣,將互聯(lián)網(wǎng)頁(yè)面劃分為5個(gè)部分: 1.已下載網(wǎng)頁(yè)集合:爬蟲(chóng)已經(jīng)從互聯(lián)網(wǎng)下載到本地進(jìn)行索引的網(wǎng)頁(yè)集合。 2.已過(guò)期網(wǎng)頁(yè)集合:由于網(wǎng)頁(yè)數(shù)最巨大,爬蟲(chóng)完整抓取一輪需要較長(zhǎng)時(shí)間,在抓取過(guò)程中,很多已經(jīng)下載的網(wǎng)頁(yè)可能過(guò)期。之所以如此,是因?yàn)榛ヂ?lián)網(wǎng)網(wǎng)頁(yè)處于不斷的動(dòng)態(tài)變化過(guò)程中,所以易產(chǎn)生本地網(wǎng)頁(yè)內(nèi)容和真實(shí)互聯(lián)網(wǎng)網(wǎng)頁(yè)不一致的情況。 3.待下載網(wǎng)頁(yè)集合:即處于上圖中待抓取URL隊(duì)列中的網(wǎng)頁(yè),這些網(wǎng)頁(yè)即將被爬蟲(chóng)下載。 4.可知網(wǎng)頁(yè)集合:這些網(wǎng)頁(yè)還沒(méi)有被爬蟲(chóng)下載,也沒(méi)有出現(xiàn)在待抓取URL隊(duì)列中,不過(guò)通過(guò)已經(jīng)抓取的網(wǎng)頁(yè)或者在待抓取URL隊(duì)列中的網(wǎng)頁(yè),總足能夠通過(guò)鏈接關(guān)系發(fā)現(xiàn)它們,稍晚時(shí)候會(huì)被爬蟲(chóng)抓取并索引。 5.不可知網(wǎng)頁(yè)集合:有些網(wǎng)頁(yè)對(duì)于爬蟲(chóng)來(lái)說(shuō)是無(wú)法抓取到的,這部分網(wǎng)頁(yè)構(gòu)成了不可知網(wǎng)頁(yè)集合。事實(shí)上,這部分網(wǎng)頁(yè)所占的比例很高。 根據(jù)不同的應(yīng)用,爬蟲(chóng)系統(tǒng)在許多方面存在差異,大體而言,可以將爬蟲(chóng)劃分為如下三種類(lèi)型: 1. 批量型爬蟲(chóng)(Batch Crawler):批量型爬蟲(chóng)有比較明確的抓取范圍和目標(biāo),當(dāng)爬蟲(chóng)達(dá)到這個(gè)設(shè)定的目標(biāo)后,即停止抓取過(guò)程。至于具體目標(biāo)可能各異,也許是設(shè)定抓取一定數(shù)量的網(wǎng)頁(yè)即可,也許是設(shè)定抓取消耗的時(shí)間等。 2.增量型爬蟲(chóng)(Incremental Crawler):增量型爬蟲(chóng)與批量型爬蟲(chóng)不同,會(huì)保持持續(xù)不斷的抓取,對(duì)于抓取到的網(wǎng)頁(yè),要定期更新,因?yàn)榛ヂ?lián)網(wǎng)的網(wǎng)頁(yè)處于不斷變化中,新增網(wǎng)頁(yè)、網(wǎng)頁(yè)被刪除或者網(wǎng)頁(yè)內(nèi)容更改都很常見(jiàn),而增量型爬蟲(chóng)需要及時(shí)反映這種變化,所以處于持續(xù)不斷的抓取過(guò)程中,不是在抓取新網(wǎng)頁(yè),就是在更新已有網(wǎng)頁(yè)。通用的商業(yè)搜索引擎爬蟲(chóng)基本都屬此類(lèi)。 3.垂直型爬蟲(chóng)(Focused Crawter):垂直型爬蟲(chóng)關(guān)注特定主題內(nèi)容或者屬于特定行業(yè)的網(wǎng)頁(yè),比如對(duì)于健康網(wǎng)站來(lái)說(shuō),只需要從互聯(lián)網(wǎng)頁(yè)而里找到與健康相關(guān)的頁(yè)面內(nèi)容即可,其他行業(yè)的內(nèi)容不在考慮范圍。垂直型爬蟲(chóng)一個(gè)最大的特點(diǎn)和難點(diǎn)就是:如何識(shí)別網(wǎng)頁(yè)內(nèi)容是否屬于指定行業(yè)或者主題。從節(jié)省系統(tǒng)資源的角度來(lái)說(shuō),不太可能把所有互聯(lián)網(wǎng)頁(yè)面下載下來(lái)之后再去篩選,這樣浪費(fèi)資源就太過(guò)分了,往往需要爬蟲(chóng)在抓取階段就能夠動(dòng)態(tài)識(shí)別某個(gè)網(wǎng)址是否與主題相關(guān),并盡量不去抓墩無(wú)關(guān)頁(yè)面,以達(dá)到節(jié)省資源的目的。垂直搜索網(wǎng)站或者垂直行業(yè)網(wǎng)站往往需要此種類(lèi)型的爬蟲(chóng)。 該文章在 2013/3/27 22:24:11 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |