傅一平
聚焦爬蟲技術
聚焦網絡爬蟲也就是主題網絡爬蟲,它增加了鏈接評價和內容評價模塊,其爬行策略實現要點就是評價頁面內容以及鏈接的重要性。
基于鏈接評價的爬行策略,主要是以Web頁面作為半結構化文檔,其中擁有很多結構信息可用于評價鏈接重要性。還有一個是利用Web結構來評價鏈接價值的方法,也就是HITS法,通過計算每個訪問頁面的Authority權重和Hub權重來決定鏈接訪問順序。
而基于內容評價的爬行策略,主要是將與文本相似的計算法加以應用。Fish-Search算法就是把用戶輸入查詢詞當作主題,在算法的進一步改進后,通過Shark-Search算法就能利用空間向量模型計算頁面和主題相關度大小。
而面向主題爬蟲與面向需求爬蟲會針對某種特定的內容去爬取信息,而且會保證信息和需求盡可能相關。
通用爬蟲技術
通用爬蟲技術也就是全網爬蟲,其實現過程如下。
第一,獲取初始URL。初始URL地址可以由用戶人為指定,也可以由用戶指定的某個或某幾個初始爬取網頁決定。
第二,根據初始的URL爬取頁面并獲得新的URL。獲得初始的URL地址之后,需要先爬取對應URL地址中的網頁,接著將網頁存儲到原始數據庫中,并且在爬取網頁的同時,發現新的URL地址,并將已爬取的URL地址存放到一個URL列表中,用于去重及判斷爬取的進程。
第三,將新的URL放到URL隊列中,再于第二步內獲取下一個新的URL地址之后,再將新的URL地址放到URL隊列中。
第四,從URL隊列中讀取新的URL,并依據新的URL爬取網頁,同時從新的網頁中獲取新的URL并重復上述的爬取過程。
第五,滿足爬蟲系統設置的停止條件時,停止爬取。在編寫爬蟲的時候,一般會設置相應的停止條件。如果沒有設置停止條件,爬蟲便會一直爬取下去,一直到無法獲取新的URL地址為止,若設置了停止條件,爬蟲則會在停止條件滿足時停止爬取。
通用爬蟲技術應用有著不同的爬取策略,其中的廣度優先策略以及深度優先策略都比較關鍵,深度優先策略的實施是依照深度從低到高的順序來訪問下一級網頁鏈接。
增量爬蟲技術
某些網站會定時在原有網頁數據的基礎上更新一批數據。例如某電影網站會實時更新一批最近熱門的電影,小說網站會根據作者創作的進度實時更新最新的章節數據等。在遇到類似的場景時,便可以采用增量式爬蟲。
增量爬蟲技術就是通過爬蟲程序監測某網站數據更新的情況,以便可以爬取到該網站更新后的新數據。
關于如何進行增量式的爬取工作,以下給出3種檢測重復數據的思路。
在發送請求之前判斷這個URL是否曾爬取過;
在解析內容后判斷這部分內容是否曾爬取過;
寫入存儲介質時判斷內容是否已存在于介質中。
第一種思路適合不斷有新頁面出現的網站,比如小說的新章節、每天的實時新聞等。
第二種思路則適合頁面內容會定時更新的網站。
第三種思路則相當于最后一道防線,這樣做可以最大限度地達到去重的目的。
不難發現,實現增量爬取的核心是去重,目前存在2種去重方法。
第一,對爬取過程中產生的URL進行存儲,存儲在Redis的set中。當下次進行數據爬取時,首先在存儲URL的set中對即將發起的請求所對應的URL進行判斷,如果存在則不進行請求,否則進行請求。
第二,對爬取到的網頁內容進行唯一標識的制定(數據指紋),然后將該唯一標識存儲至Redis的set中。當下次爬取到網頁數據的時候,在進行持久化存儲之前,可以先判斷該數據的唯一標識在Redis的set中是否存在,從而決定是否進行持久化存儲。
深層網絡爬蟲技術
在互聯網中,網頁按存在方式可以分為表層網頁和深層網頁兩類。
所謂的表層網頁,是指不需要提交表單,使用靜態鏈接就能夠到達的靜態頁面。而深層網頁則隱藏在表單后面,不能通過靜態鏈接直接獲取,是需要提交一定的關鍵詞后才能夠獲取到的頁面,深層網絡爬蟲最重要的部分即為表單填寫部分。
在互聯網中深層網頁的數量往往要比表層網頁的數量多很多,故而,我們需要想辦法爬取深層網頁。
深層網絡爬蟲的基本構成包括:URL列表、LVS列表(LVS指的是標簽/數值集合,即填充表單的數據源)、爬行控制器、解析器、LVS控制器、表單分析器、表單處理器以及響應分析器。
深層網絡爬蟲的表單填寫有2種類型:
基于領域知識的表單填寫(建立一個填寫表單的關鍵詞庫,在需要時根據語義分析選擇對應的關鍵詞進行填寫);
基于網頁結構分析的表單填寫,一般在領域知識有限的情況下使用,這種方式會根據網頁結構進行分析,并自動進行表單填寫。