網絡爬蟲是捜索引擎抓取系統的重要組成部分。算法
爬蟲的主要目的是將互聯網上的網頁下載到本地造成一個或聯網內容的鏡像備份。網絡
這篇博客主要對爬蟲以及抓取系統進行一個簡單的概述。框架
1、網絡爬蟲的基本結構及工做流程網站
一個通用的網絡爬蟲的框架如圖所示:搜索引擎
網絡爬蟲的基本工做流程以下:blog
1.首先選取一部分精心挑選的種子URL;排序
2.將這些URL放入待抓取URL隊列;索引
3.從待抓取URL隊列中取出待抓取在URL,解析DNS,而且獲得主機的ip,並將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。隊列
4.分析已抓取URL隊列中的URL,分析其中的其餘URL,而且將URL放入待抓取URL隊列,從而進入下一個循環。ip
2、從爬蟲的角度對互聯網進行劃分
對應的,能夠將互聯網的全部頁面分爲五個部分:
1.已下載未過時網頁
2.已下載已過時網頁:抓取到的網頁其實是互聯網內容的一個鏡像與備份,互聯網是動態變化的,一部分互聯網上的內容已經發生了變化,這時,這部分抓取到的網頁就已通過期了。
3.待下載網頁:也就是待抓取URL隊列中的那些頁面
4.可知網頁:尚未抓取下來,也沒有在待抓取URL隊列中,可是能夠經過對已抓取頁面或者待抓取URL對應頁面進行分析獲取到的URL,認爲是可知網頁。
5.還有一部分網頁,爬蟲是沒法直接抓取下載的。稱爲不可知網頁。
3、抓取策略
在爬蟲系統中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什麼樣的順序排列也是一個很重要的問題,由於這涉及到先抓取那個頁面,後抓取哪一個頁面。而決定這些URL排列順序的方法,叫作抓取策略。下面重點介紹幾種常見的抓取策略:
1.深度優先遍歷策略
深度優先遍歷策略是指網絡爬蟲會從起始頁開始,一個連接一個連接跟蹤下去,處理完這條線路以後再轉入下一個起始頁,繼續跟蹤連接。咱們如下面的圖爲例:
遍歷的路徑:A-F-G E-H-I B C D
2.寬度優先遍歷策略
寬度優先遍歷策略的基本思路是,將新下載網頁中發現的連接直接插入待抓取URL隊列的末尾。也就是指網絡爬蟲會先抓取起始網頁中連接的全部網頁,而後再選擇其中的一個連接網頁,繼續抓取在此網頁中連接的全部網頁。仍是以上面的圖爲例:
遍歷路徑:A-B-C-D-E-F G H I
3.反向連接數策略
反向連接數是指一個網頁被其餘網頁連接指向的數量。反向連接數表示的是一個網頁的內容受到其餘人的推薦的程度。所以,不少時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不一樣網頁的抓取前後順序。
在真實的網絡環境中,因爲廣告連接、做弊連接的存在,反向連接數不能徹底等他我那個也的重要程度。所以,搜索引擎每每考慮一些可靠的反向連接數。
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.大站優先策略
對於待抓取URL隊列中的全部網頁,根據所屬的網站進行分類。對於待下載頁面數多的網站,優先下載。這個策略也所以叫作大站優先策略。