一種基于Heritrix爬蟲的分布式采集方法及系統的制作方法
【技術領域】
[0001]本發明屬于計算機互聯網方面,涉及互聯網網頁式爬蟲采集及監控領域,尤其涉及一種基于Heritrix爬蟲的分布式采集方法及系統。
【背景技術】
[0002]目前互聯網搜索引擎存在廣告、垃圾網站和死鏈接過多問題,如搜索網頁鏈接打開后卻標示著“該鏈接已被刪除”的信息或“請嘗試其他鏈接”等提示。其次,中文網站檢索的更新頻率慢,一般每隔兩至四周才由“蜘蛛”程序重新爬取;其自身系統數據庫龐大,也造成數據的更新速度無法大幅度提高,從而影響檢索性能的時效性。另外,互聯網搜索引擎不能根據用戶個性化需求進行定制功能;比如:只檢索某個網站前三層URL (互聯網上標準資源的地址)中的新聞視頻信息,視頻數據不能包含電影、電視劇等。
[0003]究其原因,是由于網絡結構系統性能過低。目前各類開源網絡爬蟲大多都采用集中式網絡結構設計:在一臺服務器上給定初始URLURL集合,通過爬蟲主體程序多個線程分別獲取URL URL,將URL對應的html頁面獲取到本地進行分析,頁面內容提取模塊將提取可供檢索的信息,URL提取模塊提取新的指向其他頁面的鏈接,經過一系統處理并保存供后續繼續爬取。當系統數據規模到達一定程度(如網頁數達到億級別)時,這種架構模式的單機服務器硬件性能問題就突顯出來了。
[0004]為了緩解上述問題,互聯網檔案館和北歐國家圖書館聯合開發出了 Heritrix。是一個由java開發的、開源的網絡爬蟲,用戶可以使用它來從網上抓取想要的資源。Heritrix它的執行是遞歸進行的,主要包括以下幾個步驟:(I)獲取預設的一個URL ; (2)獲取該URL的采集地址集;(3)解析采集地址集,并進行歸檔;(4)從中選擇出相關的URL,并加入預設URL隊列。Heritrix由一些核心類與可插件模塊構成,核心類可以配置,滿足實際配置需求,插件模塊可任由第三方模塊取代,可以不斷的被其感興趣的第三方改進,已成為一個比較成熟的開源爬蟲,并被廣泛使用。
[0005]在面向監管類系統中,一般的爬蟲在設計上功能顯得都比較臃腫。在監管系統中,爬取的范圍是明確的,爬取的內容是明確的,爬取的頻率基本是固定的。同樣基于鏈的發現,而不需要遵循正常爬蟲的協議,無需給出鏈的分值、無需建立內容索引,但需要對目標頁面進行結構化抽取,并存入指定的數據庫、索引庫、分布式文件系統等持久化環境中。這種近乎鏡像全站的爬取方法,Heritrix有著得天獨厚的優越性條件,但Heritrix目前無法完好支持分布式采集與調度。
【發明內容】
[0006]本發明要解決的技術問題在于,針對現有技術的上述Heritrix目前無法完好支持分布式采集與調度缺陷,本發明對插件模塊進行了改進,提供一種基于Heritrix爬蟲的分布式采集方法及其系統。
[0007]根據本發明的第一方面,本發明提供了一種基于Heritrix爬蟲的分布式采集方法,包括以下步驟:設置一個管理服務模塊,并設置多個發布的Heritrix節點,所述管理服務模塊為一個Heritrix節點管理的網頁系統;通過UDP協議將所述的多個Heriteix節點廣播到獲取的初始種子所在的網段,管理服務模塊監聽到Heriteix節點信息后自動加入該節點并進行管理,管理服務模塊獲取初始種子以及節點任務,所述的種子為預置或者是來自于初始種子隊列;管理服務模塊獲取節點任務,指定將任務建立到具體節點或者是全部節點上,管理服務模塊通過調用Heritrix的應用程序編程接口 API在發布的Heritrix節點上生成配置節點和任務信息的配置文件管理服務模塊根據Heritrix節點任務生成并獲取管理服務模塊獲取的初始種子對應網頁上的實際種子Meritrix節點從初始種子獲得實際種子信息,并解析實際種子的附加信息;Heritrix從實際種子的配置文件中獲取實際種子,并采集實際種子對應網頁上生成的鏈接以及該鏈接對應的附加信息,Heritrix自動判別并抽取出滿足條件的鏈接生成初始種子隊列,所述附加信息包括采集層次、采集周期、節點分布、是否動態代理、子域名數量限定、正則配置。
[0008]在本發明所述的方法中,采集實際種子對應網頁上生成的鏈接以及該鏈接對應的附加信息步驟,包括:對實際種子是否使用動態代理進行判別后下載網頁,若為動態代理,則從管理服務模塊獲取動態代理地址信息,并動態隨機設定一個代理地址,將采集到的信息進行字段抽取,根據種子設定的正則信息進行抽取,所述正則信息包括作者、標題、內容、來源、發布時間。
[0009]在本發明所述的方法中,還通過擴展Heritrix采集過程的生命周期監聽,將監聽到的狀態進行判斷,若采集結束,則自動重啟任務,并且管理服務模塊從Heritrix獲取本輪采集狀況,該任務重啟后,管理服務模塊將從初始種子隊列獲取下一輪初始種子進行采集,所述的采集情況包括:采集各種子的開始時間、結束時間、掃描網頁數量、持久化數量、下載字節數。
[0010]在本發明所述的方法中,還監控Heritrix的運行狀態,并提供Heritrix運行狀態信息。
[0011]進一步的,在本發明所述的方法中,通過檢查節點的心跳是否超時,若超時,在重置分配到該節點的種子,使其分配到正常工作的節點上。
[0012]根據本發明的第二方面,本發明提供一種基于Heritrix爬蟲的分布式采集系統,還包括管理服務模塊以及節點廣播模塊,所述的結點廣播模塊用于將多個發布的Heritrix節點通過UDP協議將所述的多個Heriteix節點廣播到獲取的初始種子所在的網段,所述的管理服務模塊為一個Heritrix節點管理的網頁系統,包括:節點處理單元:用于獲取初始種子,并在監聽到結點廣播模塊廣播的多個發布的Heriteix節點信息后自動加入該節點并進行管理;任務配置單元:用于獲取節點任務并將任務指定到將任務建立到具體節點或者是全部節點上,通過調用Heritrix的應用程序編程接口 API在發布的Heritrix節點上生成配置節點和任務信息的配置文件;生成獲取單元:用于根據Heritrix節點任務對管理服務模塊獲取的初始種子對應網頁上生成鏈接,并獲取此鏈接,還用于控制Heritrix節點從初始種子獲得實際種子信息,并解析實際種子的附加信息。
[0013]在本發明所述的系統中,管理服務模塊還包括動態代理單元,所述的動態代理單元隨機生成動態代理地址,并提供給Heritrix,并對實際種子是否使用動態代理進行判別后下載網頁,若是,則從管理服務模塊獲取動態代理地址信息,并動態隨機設定一個代理地址,將采集到的信息進行字段抽取,根據種子設定的正則信息進行抽取,所述動態代理地址為管理服務模塊隨機生成,所述正則信息包括作者、標題、內容、來源、發布時間。
[0014]在本發明所述的系統中,還包括任務重啟模塊,所述任務重啟模塊用于擴展Heritrix采集過程的生命周期監聽,將監聽到的狀態進行判斷,若采集結束,則自動重啟任務,并且管理服務模塊從Heritrix獲取本輪采集狀況,該任務重啟后,管理服務模塊將從初始種子隊列獲取下一輪初始種子進行采集。
[0015]在本發明所述的系統中,還包括實時監控模塊,所述實時監控模塊用于監控Heritrix的運行狀態,并提供Heritrix運行狀態信息。
[0016]在本發明所述的系統中,還包括節點監聽模塊,所述的節點監聽模塊用于檢測節點的心跳,當心跳超時,則重新分配到該節點的種子,使其分配到正常的節點上。
[0017]實施本發明具有以下有益效果:
[0018]通過增加一個Heritrix節點管理的網頁系統,并設置多個發布的Heritrix節點,通過UDP協議將所述的多個H