Heritrix Eclipse配置和使用


1、首先在 Eclipse 中新建 Java 工程 ,工程名自取,以MyHeritrix爲例。利用下載的源代碼包根據以下步驟來配置這個工程。

2、導入類庫
Heritrix 所用到的工具類庫都在 heritrix-1.14.4-src\lib 目錄下,需要將其導入 MyHeritrix 工程。
1)將 heritrix-1.14.4-src 下的 lib 文件夾拷貝到 MyHeritrix 項目根目錄;
2)在 MyHeritrix 工程上右鍵單擊選擇“Build PathConfigure Build Path …”,然後選擇 Library 選項卡,單擊“Add JARs …”,如圖 1 所示。
圖 1. 導入類庫 - 導入前
圖 1. 導入類庫 - 導入前

3)在彈出的“JAR Selection”對話框中選擇 MyHeritrix 工程 lib 文件夾下所有的 jar 文件,然後點擊 OK 按鈕。如圖 2 所示。

圖 2. 選擇類庫
圖 2. 選擇類庫

設置完成後如圖 3 所示:

圖 3. 導入類庫 - 導入後
圖 3. 導入類庫 - 導入後
3、拷貝源代碼
1)將 heritrix-1.14.4-src\src\java 下的 com、org 和 st 三個文件夾拷貝進 MyHeritrix 工程的 src 下。這三個文件夾包含了運行 Heritrix 所必須的核心源代碼;
2)將 heritrix-1.14.4-src\src\resources\org\archive\util 下的文件 tlds-alpha-by-domain.txt 拷貝到 MyHeritrix\src\org\archive\util 中。該文件是一個頂級域名列表,在 Heritrix 啓動時會被讀取;
3)將 heritrix-1.14.4-src\src 下 conf 文件夾拷貝至 Heritrix 工程根目錄。它包含了 Heritrix 運行所需的配置文件;
4)將 heritrix-1.14.4-src\src 中的 webapps 文件夾拷貝至 Heritrix 工程根目錄。該文件夾是用來提供 servlet 引擎的,包含了 Heritrix 的 web UI 文件。需要注意的是它不包含幫助文檔,如果想使用幫助,可以將 heritrix-1.14.4.zip\docs 中的 articles 文件夾拷貝到 MyHeritrix\webapps\admin\docs(需新建 docs 文件夾)下。或直接用 heritrix-1.14.4.zip 的 webapps 文件夾替換 heritrix-1.14.4-src\src 中的 webapps 文件夾,缺點是這個是打包好的 .war 文件,無法修改源代碼。
拷貝完畢後的 MyHeritrix 工程目錄層次如圖 4 所示。這裏運行 Heritrix 所需的源代碼等已經準備完備,下面需要修改配置文件並添加運行參數。

圖 4. MyHeritrix 工程的目錄層次
圖 4. MyHeritrix 工程的目錄層次
4、修改配置文件
conf 文件夾是用來提供配置文件的,裏面包含了一個很重要的文件:heritrix.properties。heritrix.properties 中配置了大量與 Heritrix 運行息息相關的參數,這些參數的配置決定了 Heritrix 運行時的一些默認工具類、Web UI 的啓動參數,以及 Heritrix 的日誌格式等。當第一次運行 Heritrix 時,只需要修改該文件,爲其加入 Web UI 的用戶名和密碼。如圖 5 所示,設置 heritrix.cmdline.admin = admin:admin,“admin:admin”分別爲用戶名和密碼。然後設置版本參數爲 1.14.4。

圖 5. 設置登陸用戶名和密碼
圖 5. 設置登陸用戶名和密碼
5、配置運行文件
在 MyHeritrix 工程上右鍵單擊選擇“Run As Run Configurations”,確保 Main 選項卡中的 Project 和 Main class 選項內容正確,如圖 6 所示。其中的 Name 參數可以設置爲任何方便識別的名字。
圖 6. 配置運行文件—設置工程和類
圖 6. 配置運行文件—設置工程和類
然後在 Classpath 頁選擇 UserEntries 選項,此時右邊的 Advanced 按鈕處於激活狀態,點擊它,在彈出的對話框中選擇“Add Folders”,然後選擇 MyHeritrix 工程下的 conf 文件夾。如圖 7 所示。

圖 7. 添加配置文件
圖 7. 添加配置文件
至此我們的 MyHeritrix 工程已經可以運行起來了。
6、找到 org.archive.crawler 包中的 Heritrix.java 文件,它是 Heritrix 爬蟲啓動的入口,右鍵單擊選擇“Run AsJava Application”,如果配置正確,會在控制檯輸出如圖 8 所示的啓動信息。

圖 8. 運行成功時控制檯輸出
圖 8. 運行成功時控制檯輸出
在瀏覽器中輸入 http://localhost:8080,會打開如圖 9 所示的 Web UI 登錄界面。
登錄界面
輸入之前設置的用戶名 / 密碼:admin/admin,進入到 Heritrix 的管理界面,如圖 10 所示。因爲我們還沒有創建抓取任務,所以 Jobs 顯示爲 0。

圖 10. Heritrix 控制檯
Heritrix 控制檯
Heritrix 使用 Web 用戶界面來啓動、設置爬行參數並監控爬行,簡單直觀,易於管理。下面我們以北京林業大學首頁 (http://www.bjfu.edu.cn/) 爲種子站點來創建一個抓取實例。
在 Jobs 頁面創建一個新的抓取任務,如圖 11 所示,可以創建四種任務類型。

圖 11. 創建抓取任務
創建抓取任務
Based on existing job:以一個已經有的抓取任務爲模板生成新的抓取任務。
Based on a recovery:在以前的某個任務中,可能設置過一些狀態點,新的任務將從這個設置的狀態點開始。
Based on a profile:專門爲不同的任務設置了一些模板,新建的任務將按照模板來生成。
With defaults:這個最簡單,表示按默認的配置來生成一個任務。

這裏我們選擇“With defaults”,然後輸入任務相關信息,如圖 12 所示。

圖 12. 創建抓取任務“BJFU”
圖 12. 創建抓取任務“BJFU”
注意圖 11 中下方的按鈕,通過這些按鈕可以對抓取工作進行詳細的設置,這裏我們只做一些必須的設置。
首先點擊“Modules”按鈕,在相應的頁面爲此次任務設置各個處理模塊,一共有七項可配置的內容,這裏我們只設置 Crawl Scope 和 Writers 兩項,下面簡要介紹各項的意義。

1)Select Crawl Scope:Crawl Scope 用於配置當前應該在什麼範圍內抓取網頁鏈接。例如選擇 BroadScope 則表示當前的抓取範圍不受限制,選擇 HostScope 則表示抓取的範圍在當前的 Host 範圍內。在這裏我們選擇 org.archive.crawler.scope.BroadScope,並單擊右邊的 Change 按鈕保存設置狀態。
2)Select URI Frontier:Frontier 是一個 URL 的處理器,它決定下一個被處理的 URL 是什麼。同時,它還會將經由處理器鏈解析出來的 URL 加入到等待處理的隊列中去。這裏我們使用默認值。
3)Select Pre Processors:這個隊列的處理器是用來對抓取時的一些先決條件進行判斷。比如判斷 robot.txt 信息等,它是整個處理器鏈的入口。這裏我們使用默認值。
4)Select Fetchers:這個參數用於解析網絡傳輸協議,比如解析 DNS、HTTP 或 FTP 等。這裏我們使用默認值。
5)Select Extractors:主要是用於解析當前服務器返回的內容,取出頁面中的 URL,等待下次繼續抓取。這裏我們使用默認值。
6)Select Writers:它主要用於設定將所抓取到的信息以何種形式寫入磁盤。一種是採用壓縮的方式(Arc),還有一種是鏡像方式(Mirror)。這裏我們選擇簡單直觀的鏡像方式:org.archive.crawler.writer.MirrorWriterProcessor。
7)Select Post Processors:這個參數主要用於抓取解析過程結束後的掃尾工作,比如將 Extrator 解析出來的 URL 有條件地加入到待處理的隊列中去。這裏我們使用默認值。
設置完畢後的效果如圖 13:

圖 13. 設置 Modules
!圖 13. 設置 Modules

設置完“Modules”後,點擊“Settings”按鈕,這裏只需要設置 user-agent 和 from,其中:
“@VERSION@”字符串需要被替換成 Heritrix 的版本信息。
“PROJECT_URL_HERE”可以被替換成任何一個完整的 URL 地址。
“from”屬性中不需要設置真實的 E-mail 地址,只要是格式正確的郵件地址就可以了。
對於各項參數的解釋,可以點擊參數前的問號查看。本次任務設置如圖 14 所示。

圖 14. 設置 Settings
圖 14. 設置 Settings
完成上述設置後點擊“Submit job”鏈接,然後回到 console 控制檯,可以看到我們剛剛創建的任務處於 pending 狀態,如圖 15 所示。

圖 15. 啓動任務
圖 15. 啓動任務
點擊“Start”啓動任務,刷新一下即可看到抓取進度以及相關參數。同時可以暫停或終止抓取過程,如圖 16 所示。需要注意的是,進度條的百分比數量並不是準確的,這個百分比是實際上已經處理的鏈接數和總共分析出的鏈接數的比值。隨着抓取工作不斷進行,這個百分比的數字也在不斷變化。

圖 16. 開始抓取
圖 16. 開始抓取
同時,在 MyHeritrix 工程目錄下自動生成“jobs”文件夾,包含本次抓取任務。抓取下來網頁以鏡像方式存放,也就是將 URL 地址按“/”進行切分,進而按切分出來的層次存儲。


一些說明
儘管 Heritrix 也提供了一些抓取範圍控制的類,但是根據實際測試經驗,如果想要完全實現自己的抓取邏輯,僅僅靠 Heritrix 提供的抓取控制是不夠的,只能修改擴展源代碼。

1、創建項目後,Heritrix中報錯:sun.net.www.protocol.file.FileURLConnection,原因爲sun包是受保護的包,默認只有sun公司的軟件才能使用。Eclipse會報錯,把對保護使用waring就可以了。
步驟如下:Windows -> Preferences -> Java -> Compiler -> Errors/Warnings-> Deprecated and trstricted API -> Forbidden reference (access rules): -> change to warning
這裏寫圖片描述

2、在進入module配置頁,若發現所有的配置可以刪除,移動,但是不可以添加和修改,沒有可選的下拉框。原因爲配置文件找不到,應該在classpath標籤頁添加配置文件的路徑。前面已經提到
即第一部分的第9步。
3、問題: thread-10 org.archive.util.ArchiveUtils.() TLD list unavailable
java.lang.NullPointerException
at java.io.Reader.(Unknown Source)
at java.io.InputStreamReader.(Unknown Source)
at org.archive.util.ArchiveUtils.(ArchiveUtils.java:759)
解決:將heritrix-1.14.4-src.zip解壓中src/resources/org/archive/util中tlds-alpha-by-domain.txt文件複製到工程中org.archive.util包下。
問題:heritrix1.14.4配置-沒有add和change按鈕的問題
在eclipse中可以啓動heritrix,但在jobs->modules.jsp頁面中沒有添加(“Add”)按扭,且出現以下異常。
致使錯誤:“無法編譯樣式表” 嚴重 thread-12 org.archive’crawler.framework.WriterPodProcessor.io.arc…….
解決辦法:將heritrix 項目中的modulse的上一級目錄文件添加到eclipse的classpath中。若問題未解決,則把heritrix-1.14.4\src\conf下的modules文件夾移到src文件夾中


Modules中的一些配置項
在Modules界面中,共有8個選項需要配置,包括以下
1、Crawl Scope
用於配置抓取範圍。選項請見下圖。
根據名稱可以直觀的知道抓取範圍,默認是BroadScope,即不限制範圍。
從下拉框中選擇某一項後,點擊chang按鍵,則下拉框上面的解釋會相應的發生變化,描述當前選項的特徵。
這裏寫圖片描述

2、URI Frontier
用於確定待抓取的url的順序,亦即相應的算法。默認項爲BdbFrontier。
這裏寫圖片描述
3、Pre Processors:Processors that should run before any fetching
在抓取前,處理器對一些先決條件做的判斷。比如判斷robot.txt等信息,它是整個處理器鏈的入口。
這裏寫圖片描述
4、Fetchers:Processors that fetch documents using various protocols
指定解釋、提取哪些類型的文件
這裏寫圖片描述
5、Extractors:Processors that extracts links from URIs
用於提取當前獲取到文件的信息。
這裏寫圖片描述
6、Writers:Processors that write documents to archive files
選擇保存的方式,常用的有2種:
org.archive.crawler.writer.MirrorWriterProcessor:保存鏡像,即將文件直接下載下來。
org.archive.crawler.writer.ARCWriterProcessor:以歸檔的格式下載下來,此時文件不可直接查看。此項爲default模塊的默認選項。
這裏寫圖片描述
7、Post Processors Processors that do cleanup and feed the Frontier with new URIs
抓取後的收尾工作。
這裏寫圖片描述
8、Statistics Tracking
用於一些統計信息。
這裏寫圖片描述


Setting中的一些配置項

修改下載文件的路徑
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章