開源爬蟲: Heritrix 1.14.4 安裝/使用

 

http://blog.csdn.net/ljj657137723/article/details/45484793java


Heritrix 是一個由 java 開發的、開源的網絡爬蟲,用戶可使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。本文詳細介紹了 Heritrix 在 Eclipse 中的配置、運行。web

目前 Heritrix 的最新版本是 3.1.0(2011-10-21 發佈),您能夠從 SourceForge(http://sourceforge.net/projects/archive-crawler/files/)上下載。每一個版本都有四個壓縮包,兩個 .tar.gz 包用於 Linux 下,.zip 用於 windows 下。windows

如:http://sourceforge.net/projects/archive-crawler/files/archive-crawler (heritrix 1.x)/1.14.4/瀏覽器

其中 heritrix-1.14.4.zip 是源代碼通過編譯打包後的文件,而 heritrix-1.14.4-src.zip 中包含原始的源代碼,方便進行二次開發。本文須要用到 heritrix-1.14.4-src.zip,將其下載並解壓至 heritrix-1.14.4-src 文件夾。服務器

在 Eclipse 中的配置網絡

首先在 Eclipse 中新建 Java 工程 MyHeritrix。而後利用下載的源代碼包根據如下步驟來配置這個工程。app

1. 導入類庫dom

Heritrix 所用到的工具類庫都在 heritrix-1.14.4-src\lib 目錄下,須要將其導入 MyHeritrix 工程。webapp

1)將 heritrix-1.14.4-src 下的 lib 文件夾拷貝到 MyHeritrix 項目根目錄;工具

2)在 MyHeritrix 工程上右鍵單擊選擇「Build Path -> Configure Build Path …」,而後選擇 Library 選項卡,單擊「Add JARs …」,如圖 1 所示。

圖 1. 導入類庫 - 導入前

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

圖 2. 選擇類庫

設置完成後如圖 3 所示:

圖 3. 導入類庫 - 導入後

2. 拷貝源代碼

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 工程的目錄層次

3. 修改配置文件

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. 設置登錄用戶名和密碼

4. 配置運行文件

在 MyHeritrix 工程上右鍵單擊選擇「Run As -> Run Configurations」,選擇 Java Application, 確保 Main 選項卡中的 Project 和 Main class 選項內容正確,如圖 6 所示。其中的 Name 參數能夠設置爲任何方便識別的名字。

圖 6. 配置運行文件—設置工程和類

而後在 Classpath 頁選擇 UserEntries 選項,此時右邊的 Advanced 按鈕處於激活狀態,點擊它,在彈出的對話框中選擇「Add Folders」,而後選擇 MyHeritrix 工程下的 conf 文件夾。如圖 7 所示。

圖 7. 添加配置文件

至此咱們的 MyHeritrix 工程已經能夠運行起來了。下面咱們來看看如何啓動 Heritrix 並設置一個具體的抓取任務。

建立網頁抓取任務

找到 org.archive.crawler 包中的 Heritrix.java 文件,它是 Heritrix 爬蟲啓動的入口,右鍵單擊選擇「Run As Java Application」,若是配置正確,會在控制檯輸出如圖 8 所示的啓動信息。

圖 8. 運行成功時控制檯輸出

在瀏覽器中輸入 http://localhost:8080,會打開如圖 9 所示的 Web UI 登陸界面。

輸入以前設置的用戶名 / 密碼:admin/admin,進入到 Heritrix 的管理界面,如圖 10 所示。由於咱們尚未建立抓取任務,因此 Jobs 顯示爲 0。

圖 10. 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」

注意圖 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

設置完「Modules」後,點擊「Settings」按鈕,這裏只須要設置 user-agent 和 from,其中:

「@VERSION@」字符串須要被替換成 Heritrix 的版本信息。

「PROJECT_URL_HERE」能夠被替換成任何一個完整的 URL 地址。

「from」屬性中不須要設置真實的 E-mail 地址,只要是格式正確的郵件地址就能夠了。

對於各項參數的解釋,能夠點擊參數前的問號查看。本次任務設置如圖 14 所示。

圖 14. 設置 Settings

完成上述設置後點擊「Submit job」連接,而後回到 console 控制檯,能夠看到咱們剛剛建立的任務處於 pending 狀態,如圖 15 所示。

圖 15. 啓動任務

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

圖 16. 開始抓取

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

圖 17. 抓取到的網頁

從圖 17 也能夠看出,由於咱們選擇了 BroadScope 的抓取範圍,爬蟲會抓取全部遇到的 URL,這樣會形成 URL 隊列無限制膨脹,沒法終止,只能強行終止任務。儘管 Heritrix 也提供了一些抓取範圍控制的類,可是根據實際測試經驗,若是想要徹底實現本身的抓取邏輯,僅僅靠 Heritrix 提供的抓取控制是不夠的,只能修改擴展源代碼。

相關文章
相關標籤/搜索