深刻學習heritrix---體系結構(Overview of the crawler)

關鍵字: heritrix crawler
Heritrix採用了模塊化的設計,它由一些核心類(core classes)和可插件模塊(pluggable modules)構成。
核心類能夠配置,但不能被覆蓋,插件模塊能夠被由第三方模塊取代。
(一)heritrix的體系結構圖:
 
(二)架構分析
CrawlController(下載控制器)
整個下載過程的總的控制者,整個抓取工做的起點,決定整個抓取任務的開始和結束。從Frontier獲取URI,傳遞給
線程池(ToePool)中的ToeThread處理。
 
Frointier(邊界控制器)
主要肯定下一個將被處理的URI,負責訪問的均衡處理,避免對某一web服務器形成太大的壓力。
它保存着crawl的狀態:
(1)發現的URI(URIs have been discovered)
(2)正在被處理的URI(URIs are being processed (fetched))
(3)已經處理的URI(URIs have been processed)
 
TeoThread(處理線程)
Heritrix是多線程的,每個URI被一個ToeThread處理。
 
Processor(處理器)
下圖爲處理器的整個結構圖

許多Processor組成一個處理鏈(processor chains)中,每個處理鏈對URI進行一系列的處理。
(1)Pre-fetch processing chain(預處理鏈)
主要根據robot協議,DNS以及下載範圍控制信息判斷當前URI是否應當處理。
(2)Fetch processing chain(抓取處理鏈)
從遠程服務器獲取數據
(3) Extractor processing chain(抽取處理鏈)
從網頁中抽取新的URI
(4)Write/index processing chain(寫處理鏈)
負責把數據寫入本地磁盤
(5)Post-processing chain(後置處理鏈)
由CrawlStateUpdater,LinksScoper,FrontierScheduler構成。
 
主要參考:Heritrix文檔
 
原始地址:
相關文章
相關標籤/搜索