1. 程式人生 > >垂直搜尋架構(爬蟲部分) ------垂直爬蟲

垂直搜尋架構(爬蟲部分) ------垂直爬蟲

垂直爬蟲的程式碼實現比較簡單,主要是兩方面:
1. 限定url,一般是通過正則匹配
2.限定內容,比如列表頁面只要抓取詳細頁面的url,詳細頁面只要抓取特定內容,一般都是用css 選擇器或者xpath的庫取匹配內容

垂直爬蟲的技術難點沒有全網爬出那麼多,主要要解決的是反爬的問題.
針對性的做幾個專案的垂直爬蟲,你就慢慢形成了你自己的垂直爬蟲框架,有了自己的任務管理,資料集儲存,基本的資料處理器,實現了一些通用的採集器,這樣有新需求的時候就比較簡單了,對於垂直採集來說就是設定設定URL規則,寫些解析頁面的指令碼程式碼.

以上是自己寫了幾個垂直採集系統的經驗之談,歡迎一起探討

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

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

通常把爬蟲爬取資源分成三個步驟:url-crawling(連結抓取),detail-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.爬取的資源更新到資料庫中。

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