1. 程式人生 > 程式設計 >Java爬蟲技術框架之Heritrix框架詳解

Java爬蟲技術框架之Heritrix框架詳解

Heritrix是一個由Java開發的開源Web爬蟲系統,用來獲取完整的、精確的站點內容的深度複製,

具有強大的可擴充套件性,執行開發者任意選擇或擴充套件各個元件,實現特定的抓取邏輯。

一、Heritrix介紹

Heritrix採用了模組化的設計,使用者可以在執行時選擇要用的模組。它由核心類(core classes)和外掛模組(pluggable modules)構成。

核心類可以配置,但不能被覆蓋,外掛模組可以由第三方模組取代。所以我們就可以用實現了特定抓取邏輯的第三方模組來取代預設的外掛模組,從而滿足自己的抓取需要。

CrawlController(下載控制器)整個下載過程的總控制者,整個抓取工作的起點,決定整個抓取任務的開始和結束。每個URI都有一個獨立的執行緒,它從邊界控制器(Frontier)獲取新的URI,然後傳遞給Processor chains(處理鏈)經過一系列Processor(處理器)處理。

Java爬蟲技術框架之Heritrix框架詳解

二、Heritrix架構

中央控制器 CrawlController 是核心元件,決定了整個抓取任務的開始與結束。

使用者在 Heritrix web UI 控制檯設定抓取任務後,heritrix首先構造XMLSettingsHandler物件,然後呼叫CrawlController的建構函式,構造一個CrawlController例項並初始化,這樣,CrawlController就具備了執行條件。

此時,只需呼叫 requestCrawlStart()方法就可以啟動執行緒池和Frontier,以便向執行緒池中工作執行緒提供抓取用的URL連結。

Java爬蟲技術框架之Heritrix框架詳解

Heritrix 3.x 的框架主要分為 Engine 和 Component

三、一些API

org.archive.crawler.framework.CrawlJob;

org.archive.crawler.postprocessor.CandidatesProcessor;
org.archive.modules.CrawlURI;

等等

抓取任務CrawlOrder類:是整個抓取工作的起點。一次抓取任務包括許多屬性,建立一個任務的方式有很多種,最簡單的一種就是根據預設的order.xml來配置。

中央控制器CrawlController:該類決定著抓取任務的開始和結束。它包含以下幾個元件:

CrawlOrder:該類儲存了order.xml的屬性配置;

CrawlScope:決定當前抓取範圍;

ProcessorChainList:處理器鏈;

Frontier:一次抓取任務需要設定一個Frontier,以此來不斷為其每個執行緒提供URI;

ToePool:它是一個執行緒池,管理了所有在當前任務中抓取過的Host名稱和Server名稱。

中央控制器CrawlControllr的類結構如圖所示:

Java爬蟲技術框架之Heritrix框架詳解

Frontier連結製造工廠:它表示一種為執行緒提供連結的工具,通過一些特定的演算法來決定哪個連結將接下來被送入處理器鏈中,同時,它本身也負責一定的日誌和狀態報告功能。

BdbFrontier類:它是用Berkeley DB 實現的,Berkeley DB 就是一個HashTable,它能夠按“key/value”方式儲存資料,能夠為應用程式提供可伸縮的、高效能的、有事務保護功能的嵌入式資料庫。

Heritrix的多執行緒ToeThread和ToePool:要想更快更有效地抓取網頁,必須採用多執行緒,Heritrix則採用多執行緒機制,提供了一個標準的執行緒池ToePool,用於管理所有的抓取執行緒。

處理器鏈 Processor:包括PreProcessor、Fetcher、Extractor、Writer、PostProcessor五種。

四、應用

作為爬蟲模組,爬取資料

Java爬蟲技術框架之Heritrix框架詳解

到此這篇關於爬蟲技術框架之Heritrix框架詳解的文章就介紹到這了,更多相關爬蟲技術框架 Heritrix內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!