網絡爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分狼速。爬蟲的主要目的是將互聯網上的網頁下載到本地形成一個或聯網內容的鏡像備份琅锻。這篇博客主要對爬蟲以及抓取系統(tǒng)進行一個簡單的概述。
一、網絡爬蟲的基本結構及工作流程
一個通用的網絡爬蟲的框架如圖所示:
網絡爬蟲的基本工作流程如下:
1.首先選取一部分精心挑選的種子URL恼蓬;
2.將這些URL放入待抓取URL隊列惊完;
3.從待抓取URL隊列中取出待抓取在URL,解析DNS处硬,并且得到主機的ip小槐,并將URL對應的網頁下載下來,存儲進已下載網頁庫中荷辕。此外凿跳,將這些URL放進已抓取URL隊列。
4.分析已抓取URL隊列中的URL疮方,分析其中的其他URL控嗜,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)骡显。
二疆栏、從爬蟲的角度對互聯網進行劃分
對應的,可以將互聯網的所有頁面分為五個部分:
1.已下載未過期網頁
2.已下載已過期網頁:抓取到的網頁實際上是互聯網內容的一個鏡像與備份惫谤,互聯網是動態(tài)變化的壁顶,一部分互聯網上的內容已經發(fā)生了變化,這時溜歪,這部分抓取到的網頁就已經過期了若专。
3.待下載網頁:也就是待抓取URL隊列中的那些頁面
4.可知網頁:還沒有抓取下來,也沒有在待抓取URL隊列中痹愚,但是可以通過對已抓取頁面或者待抓取URL對應頁面進行分析獲取到的URL富岳,認為是可知網頁。
5.還有一部分網頁拯腮,爬蟲是無法直接抓取下載的。稱為不可知網頁蚁飒。
三动壤、抓取策略
在爬蟲系統(tǒng)中,待抓取URL隊列是很重要的一部分淮逻。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題琼懊,因為這涉及到先抓取那個頁面,后抓取哪個頁面爬早。而決定這些URL排列順序的方法哼丈,叫做抓取策略。下面重點介紹幾種常見的抓取策略:
1.深度優(yōu)先遍歷策略
深度優(yōu)先遍歷策略是指網絡爬蟲會從起始頁開始筛严,一個鏈接一個鏈接跟蹤下去醉旦,處理完這條線路之后再轉入下一個起始頁,繼續(xù)跟蹤鏈接。我們以下面的圖為例:
遍歷的路徑:A-F-G? E-H-I B C D
2.寬度優(yōu)先遍歷策略
寬度優(yōu)先遍歷策略的基本思路是车胡,將新下載網頁中發(fā)現的鏈接直接插入待抓取URL隊列的末尾檬输。也就是指網絡爬蟲會先抓取起始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁匈棘,繼續(xù)抓取在此網頁中鏈接的所有網頁丧慈。還是以上面的圖為例:
遍歷路徑:A-B-C-D-E-F G H I
3.反向鏈接數策略
反向鏈接數是指一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人的推薦的程度主卫。因此逃默,很多時候搜索引擎的抓取系統(tǒng)會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先后順序簇搅。
在真實的網絡環(huán)境中笑旺,由于廣告鏈接、作弊鏈接的存在馍资,反向鏈接數不能完全等他我那個也的重要程度筒主。因此,搜索引擎往往考慮一些可靠的反向鏈接數鸟蟹。
4.Partial PageRank策略
Partial PageRank算法借鑒了PageRank算法的思想:對于已經下載的網頁乌妙,連同待抓取URL隊列中的URL,形成網頁集合建钥,計算每個頁面的PageRank值藤韵,計算完之后,將待抓取URL隊列中的URL按照PageRank值的大小排列熊经,并按照該順序抓取頁面泽艘。
如果每次抓取一個頁面,就重新計算PageRank值镐依,一種折中方案是:每抓取K個頁面后匹涮,重新計算一次PageRank值。但是這種情況還會有一個問題:對于已經下載下來的頁面中分析出的鏈接槐壳,也就是我們之前提到的未知網頁那一部分然低,暫時是沒有PageRank值的。為了解決這個問題务唐,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總雳攘,這樣就形成了該未知頁面的PageRank值,從而參與排序枫笛。下面舉例說明:
5.OPIC策略策略
該算法實際上也是對頁面進行一個重要性打分吨灭。在算法開始前,給所有頁面一個相同的初始現金(cash)刑巧。當下載了某個頁面P之后喧兄,將P的現金分攤給所有從P中分析出的鏈接无畔,并且將P的現金清空。對于待抓取URL隊列中的所有頁面按照現金數進行排序繁莹。
6.大站優(yōu)先策略
對于待抓取URL隊列中的所有網頁檩互,根據所屬的網站進行分類。對于待下載頁面數多的網站咨演,優(yōu)先下載闸昨。這個策略也因此叫做大站優(yōu)先策略。
參考書目:
1.《這就是搜索引擎——核心技術詳解》 張俊林 電子工業(yè)出版社
2.《搜索引擎技術基礎》 劉奕群等 清華大學出版社