Java爬蟲(chóng)技術(shù)框架之Heritrix框架詳解
Heritrix是一個(gè)由Java開(kāi)發(fā)的開(kāi)源Web爬蟲(chóng)系統(tǒng),用來(lái)獲取完整的、精確的站點(diǎn)內(nèi)容的深度復(fù)制,
具有強(qiáng)大的可擴(kuò)展性,運(yùn)行開(kāi)發(fā)者任意選擇或擴(kuò)展各個(gè)組件,實(shí)現(xiàn)特定的抓取邏輯。
一、Heritrix介紹
Heritrix采用了模塊化的設(shè)計(jì),用戶可以在運(yùn)行時(shí)選擇要用的模塊。它由核心類(core classes)和插件模塊(pluggable modules)構(gòu)成。
核心類可以配置,但不能被覆蓋,插件模塊可以由第三方模塊取代。所以我們就可以用實(shí)現(xiàn)了特定抓取邏輯的第三方模塊來(lái)取代默認(rèn)的插件模塊,從而滿足自己的抓取需要。
CrawlController(下載控制器)整個(gè)下載過(guò)程的總控制者,整個(gè)抓取工作的起點(diǎn),決定整個(gè)抓取任務(wù)的開(kāi)始和結(jié)束。每個(gè)URI都有一個(gè)獨(dú)立的線程,它從邊界控制器(Frontier)獲取新的URI,然后傳遞給Processor chains(處理鏈)經(jīng)過(guò)一系列Processor(處理器)處理。
二、Heritrix架構(gòu)
中央控制器 CrawlController 是核心組件,決定了整個(gè)抓取任務(wù)的開(kāi)始與結(jié)束。
用戶在 Heritrix web UI 控制臺(tái)設(shè)置抓取任務(wù)后,heritrix首先構(gòu)造XMLSettingsHandler對(duì)象,然后調(diào)用CrawlController的構(gòu)造函數(shù),構(gòu)造一個(gè)CrawlController實(shí)例并初始化,這樣,CrawlController就具備了運(yùn)行條件。
此時(shí),只需調(diào)用 requestCrawlStart()方法就可以啟動(dòng)線程池和Frontier,以便向線程池中工作線程提供抓取用的URL鏈接。
Heritrix 3.x 的框架主要分為 Engine 和 Component
三、一些API
org.archive.crawler.framework.CrawlJob;
org.archive.crawler.postprocessor.CandidatesProcessor;
org.archive.modules.CrawlURI;
等等
抓取任務(wù)CrawlOrder類:是整個(gè)抓取工作的起點(diǎn)。一次抓取任務(wù)包括許多屬性,建立一個(gè)任務(wù)的方式有很多種,最簡(jiǎn)單的一種就是根據(jù)默認(rèn)的order.xml來(lái)配置。
中央控制器CrawlController:該類決定著抓取任務(wù)的開(kāi)始和結(jié)束。它包含以下幾個(gè)組件:
CrawlOrder:該類保存了order.xml的屬性配置;
CrawlScope:決定當(dāng)前抓取范圍;
ProcessorChainList:處理器鏈;
Frontier:一次抓取任務(wù)需要設(shè)定一個(gè)Frontier,以此來(lái)不斷為其每個(gè)線程提供URI;
ToePool:它是一個(gè)線程池,管理了所有在當(dāng)前任務(wù)中抓取過(guò)的Host名稱和Server名稱。
中央控制器CrawlControllr的類結(jié)構(gòu)如圖所示:
Frontier鏈接制造工廠:它表示一種為線程提供鏈接的工具,通過(guò)一些特定的算法來(lái)決定哪個(gè)鏈接將接下來(lái)被送入處理器鏈中,同時(shí),它本身也負(fù)責(zé)一定的日志和狀態(tài)報(bào)告功能。
BdbFrontier類:它是用Berkeley DB 實(shí)現(xiàn)的,Berkeley DB 就是一個(gè)HashTable,它能夠按“key/value”方式保存數(shù)據(jù),能夠?yàn)閼?yīng)用程序提供可伸縮的、高性能的、有事務(wù)保護(hù)功能的嵌入式數(shù)據(jù)庫(kù)。
Heritrix的多線程ToeThread和ToePool:要想更快更有效地抓取網(wǎng)頁(yè),必須采用多線程,Heritrix則采用多線程機(jī)制,提供了一個(gè)標(biāo)準(zhǔn)的線程池ToePool,用于管理所有的抓取線程。
處理器鏈 Processor:包括PreProcessor、Fetcher、Extractor、Writer、PostProcessor五種。
四、應(yīng)用
作為爬蟲(chóng)模塊,爬取數(shù)據(jù)
到此這篇關(guān)于爬蟲(chóng)技術(shù)框架之Heritrix框架詳解的文章就介紹到這了,更多相關(guān)爬蟲(chóng)技術(shù)框架 Heritrix內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python爬蟲(chóng)實(shí)例——scrapy框架爬取拉勾網(wǎng)招聘信息
- Python爬蟲(chóng) scrapy框架爬取某招聘網(wǎng)存入mongodb解析
- Python3爬蟲(chóng)爬取英雄聯(lián)盟高清桌面壁紙功能示例【基于Scrapy框架】
- Python爬蟲(chóng)框架scrapy實(shí)現(xiàn)downloader_middleware設(shè)置proxy代理功能示例
- Python爬蟲(chóng)框架scrapy實(shí)現(xiàn)的文件下載功能示例
- python爬蟲(chóng)框架scrapy實(shí)現(xiàn)模擬登錄操作示例
- Python爬蟲(chóng)框架Scrapy常用命令總結(jié)
- Python爬蟲(chóng)框架Scrapy基本用法入門(mén)教程
- Python使用Scrapy爬蟲(chóng)框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼
- Python爬蟲(chóng)框架Scrapy實(shí)例代碼
相關(guān)文章
學(xué)習(xí)Python爬蟲(chóng)前必掌握知識(shí)點(diǎn)
這篇文章主要介紹了學(xué)習(xí)Python爬蟲(chóng)前,我們需要了解涉及爬蟲(chóng)的知識(shí)點(diǎn),學(xué)習(xí)爬蟲(chóng)的知識(shí)點(diǎn)比較多,我們一起學(xué)習(xí)爬蟲(chóng)吧2021-04-04解析Python中的eval()、exec()及其相關(guān)函數(shù)
本篇文章主要介紹了解析Python中的eval()、exec()及其相關(guān)函數(shù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03Python簡(jiǎn)單基礎(chǔ)小程序的實(shí)例代碼
這篇文章主要介紹了Python簡(jiǎn)單基礎(chǔ)小程序的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04python 中xpath爬蟲(chóng)實(shí)例詳解
這篇文章主要介紹了python實(shí)例:xpath爬蟲(chóng)實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Pycharm配置遠(yuǎn)程SSH服務(wù)器實(shí)現(xiàn)(切換不同虛擬環(huán)境)
本文主要介紹了Pycharm配置遠(yuǎn)程SSH服務(wù)器實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02在vscode使用jupyter notebook出現(xiàn)bug及解決
這篇文章主要介紹了在vscode使用jupyter notebook出現(xiàn)bug及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06