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