搜尋引擎處理的主要對象是海量的網頁,一方面為了節省帶寬、計算和存儲資源,另一方面是為了利用有限的資源抓取到最有價值的網頁以滿足用戶搜索需求,所以在搜尋引擎在處理海量網頁的時候會有一定的策略性。本文主要簡單介紹了寬度(廣度)優先,兼顧深度的遍歷策略、不重複抓取策略、大站優先策略、非完全PageRank策略、OCIP策略、合作抓取策略等主流的網頁抓取策略。1、寬度(廣度)優先,兼顧深度的遍歷策略;① 採用廣度優先的原因:重要的網頁往往離種子站點距離較近;全球資訊網的深度沒有我們想像的那麼深,但卻出乎意料地寬(中文全球資訊網直徑長度只有17,即任意兩個網頁之間點擊17次後便可以訪問到);寬度優先有利於多爬蟲合作抓取;② 廣度優先的存在不利結果:容易導致爬蟲陷入死循環,不該抓取的反覆抓取;應該抓取的沒有機會抓取;③ 解決以上兩個缺點的方法是深度抓取策略(Depth-First Trsversal)和不重複抓取策略④ 為了防止爬蟲無限制地寬度優先抓取,必須在某個深度上進行限制,達到這個深度後停止抓取,這個深度就是全球資訊網的直徑長度。當最大深度上停止抓取時,那些深度過大的未抓取網頁,總是期望可以從其他種子站點更加經濟地到達。限制抓取深度會破壞死循環的條件,即使出現循環也會在有限次後停止。⑤評價:寬度(廣度)優先,兼顧深度的遍歷策略,可以有效保證抓取過程中的封閉性,即在抓取過程(遍歷路徑)中總是抓取相同域名下的網頁,而很少出現其他域名下的網頁。2、不重複抓取策略保證一個變化不大的網頁只抓取一次即可,防止重複抓取佔用大量CPU和帶寬資源,從而集中有限的資源區抓取更重要、質量更高的網頁。3、大站優先策略(Larser Site First)通常大型網站都是優質的內容,網頁質量一般較高,以網站為單位來衡量網頁重要性,是有一定依據的。對於待抓取URL隊列中的網頁,根據等待下載的頁面多少來判斷下載優先級。4、非完全PageRank策略(Partial PageRank)對於已經下載的網頁(不完整的網際網路頁面的子集)內,加上待抓取的URL隊列中的URL一起,形成網頁集合,在此集合內部進行PageRank計算;計算完成以後,將待抓取URL隊列裡的網頁按照PageRank得分由高到低排序,形成序列就是爬蟲接下來應該依次抓取的URL列表。由於PageRank是一個全局算法,就是當所有網頁都被下載完成以後,其計算結果才是可靠的,但是爬蟲在抓取過程中只能接觸到一部分網頁,所以在抓取階段的網頁時無法進行可靠的PageRank計算的,所以叫做非完全PageRank策略。5、OCIP策略(Online Page Importance Computation)OCIP字面含義為「在線頁面重要性計算」,算是一種改進的PageRank算法。算法開始前,每個網際網路頁面被賦予相同的數值,每當下載了某個頁面P後,P將自己擁有的數值平均分配給頁面中包含的連結,同時清空自己的數值。對於待抓取URL隊列中的網頁,根據其手頭數值大小排序,優先下載數值較大的網頁。6、合作抓取策略(抓取提速策略)增加爬蟲數量可以提高總體抓取速度,但需要將工作量分解給不同的網頁爬蟲,以保證分工明確,防止出現多個爬蟲抓取相同的頁面,浪費資源。① 通過web主機的IP位址來分解,讓某個爬蟲僅抓取某個地址段的網頁對於中小型網站,出於經濟的考慮,通常會在一臺伺服器中提供不同的web服務,這樣就出現多個域名對應一個IP段的情況;但新浪、搜狐等大型網站通常採用負載均衡的IP組技術,同樣的域名對應多個IP位址。所以這種方式並不方便② 通過網頁域名來分解,使某個爬蟲僅抓取某個域名段的網頁將不同域名分配給不同爬蟲抓取,某一個爬蟲只抓取固定域名集合下的網頁;這樣保證不重複抓取大型網站的網頁,中小型網站即便重複抓取也可以接受的策略分配任務。所以,為了抓取大網站,按照域名分解的策略更加合理。內容比較教條化,主要用於梳理常識使用。