1. 程式人生 > >垂直爬蟲工作流程詳解

垂直爬蟲工作流程詳解

在垂直搜尋的索引建立之前,我們需要到垂直網站上抓取資源並做一定的處理。垂直搜尋與通用搜索不同之處在於,通用搜索不需要理會網站哪些資源是需要的,哪些是不需要的,一併抓取並將其文字部分做索引。而垂直搜尋裡,我們的目標網站往往在某一領域具有其專業性,其整體網站的結構相當規範(否則使用者體驗也是個災難,想想東一篇文章西一篇文章基本沒人會喜歡),並且垂直搜尋往往只需要其中一部分具有垂直性的資源,所以垂直爬蟲相比通用爬蟲更加精確。

通常把爬蟲爬取資源分成三個步驟:url-crawling(連結抓取),info-crawling(資訊抓取),format&fusion(規整與聚合),以下是整體垂直搜尋的架構及流程圖:

初次爬取:

1.首先運營人員會選定需要抓取的目標網站,錄入資料庫的站源表sitelist,然後url crawler會讀取出來存入map,並提出對應站點的正則解析規則。

2.根據事先制定的url列表頁正則表示式,url crawler到列表頁爬取列表並提取出來存入資源url表urllist,當中涉及一些列表頁分頁功能,具體視每個網站分頁url規則而定。

3.info crawler從資料庫的資源url表讀出urls及其資源頁的xpath規則,存入一個同步的佇列中(一般做法會將url做md5處理,用於去重,以免重複爬取相同url,浪費資源),多執行緒下的每個爬蟲程式將從此佇列讀取urls(若佇列為空執行緒將進入等待),然後爬取每個資源頁,並根據xpath規則提取有價值的資源(xpath用法詳見xpath解析),並將提取的資源存入原始資料表originalresource。

4.format crawler從資料庫原始資料表提取資料,進行進一步的規整、聚合(例如做一些資源分流下載伺服器,會從目標網站爬取資原始檔存入自己的檔案伺服器中),最終存入規整內容表中。

5.現在資源就可以被線上應用使用了。

更新爬取:

1.根據每個站點設定的url失效時間,定期的從資料庫抽取需要更新的資源url,加入步驟3的佇列中,進行資源爬取,並比較一些能鑑別資源是否有更新的欄位(例如應用軟體資源,可比較版本號)。

2.爬取的資源更新到資料庫中。

以上就是垂直爬蟲的工作過程,為什麼要分成三步走呢?這樣能夠將風險分化,不至於某個地方錯了,必須整個重來。維護爬蟲最耗費人工的地方就是當今網站的反爬蟲策略已經日趨成熟,其實爬取資源的過程,就是與整個網際網路形形色色的反爬蟲策略做博弈的過程,這個會在之後的部落格中詳說。