Heritrix架構簡述

2021-08-26 03:37:06 字數 1336 閱讀 999

本文的目的,其實是希望通過對heritrix架構的分析,了解如何實現乙個網路爬蟲。

heritrix的架構如圖:

web administrative console: 就是乙個基於web的控制台。heritrix內嵌了jetty就是為了做這事。

crawlorder:這東西的名字有些奇怪。但其實就是乙個crawl任務的配置。它是乙個基於xml的object,heritrix根據crawlorder中的配置,選擇合適的模組來組裝這次抓取任務的程式。而且,它還包括了一些很重要的資訊,比如抓取任務的seeds,還有抓取url的範圍,等等。

crawlcontroller:抓取的核心程式,它讀取crawlorder來配置內部的模組和引數,web console也是和它做互動來控制爬蟲。下面重點介紹controller的內部:

frontier:這個模組的名字也挺怪的,但它其實就是乙個排程器,它內部有乙個url佇列,儲存著需要去抓取的url。同時,從網頁中提取到的url也會送給frontier,所以,frontier還有乙個功能,對提取後的url進行去重。最後,froniter進行排程,決定哪個url將被抓取,然後將這個url放入toethreads中;

toethreads:這組執行緒是真正的工作執行緒,它們完成url的抓取以及一系列的後續工作。整個過程又可以分為幾部分:

pre-fetch processing: 在抓取前的一些處理;

fetch processing: 抓取url對應的網頁;

extractor processing: 抽取網頁中的url,分析網頁的資訊。這個chain是經常需要改動的,因為不同的抓取任務需求都不一樣,有一些可能不需要提取,有一些可能需要判斷網頁的內容是否發生改變。這些都可以通過配置或者改寫extractor來實現;

write/index processing: 將網頁儲存下來,或者寫入某個搜尋引擎;

post processing: 後處理;

每乙個從frontier中排程出來的url都需要經歷這些步驟。所以,在爬蟲的執行過程中,frontier和這些processing chain構成了乙個環,frontier將需要處理的url放入processor chain中,從processor chain中提取出的新的url再被放入frontier中:

froniter和processing chains的具體互動如下圖:

reference

1. an introduction to heritrix

2. heritrix developer documentation

3. heritrix user manual

Heritrix架構簡述

本文的目的,其實是希望通過對heritrix架構的分析,了解如何實現乙個網路爬蟲。heritrix的架構如圖 web administrative console 就是乙個基於web的控制台。heritrix內嵌了jetty就是為了做這事。crawlorder 這東西的名字有些奇怪。但其實就是乙個c...

多層架構簡述

使用多層架構進行系統開發是現今系統設計的流行趨勢。通過分解業務細節,將不同的功能 分散開來,更利於系統的設計和開發,同時為可能的變更提供了更小的單元。以下就是乙個典型的多層體系結構圖。首先我們以 訂單 order 為例,進行乙個簡單的業務分解。1.訂單自然包括訂單的內容 orderinfo 其中有諸...

多層架構簡述

分類 多層架構 2007 06 20 14 47 2247人閱讀收藏 舉報 資料庫ioc 架構設計 儲存session作業 使用多層架構進行系統開發是現今系統設計的流行趨勢。通過分解業務細節,將不同的功能 分散開來,更利於系統的設計和開發,同時為可能的變更提供了更小的單元。以下就是乙個典型的多層體系...