本文的目的,其實是希望通過對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作業 使用多層架構進行系統開發是現今系統設計的流行趨勢。通過分解業務細節,將不同的功能 分散開來,更利於系統的設計和開發,同時為可能的變更提供了更小的單元。以下就是乙個典型的多層體系...