Heritrix-1.12.1在Eclipse中的配置

關於網絡爬蟲Heritrix,在配置上真是一件不容易的事情,之所以這樣會說,是因爲Heritrix開發之初就是基於在Unix平臺的(可以參考官方Manual,網址爲http://crawler.archive.org/articles/user_manual/index.html),可以保證非常容易地在Unix平臺下輕鬆地啓動。因此,在Windows平臺下,配置起來讓人感覺有點非常規。

在網絡上有很多關於配置它的求助帖子,我感覺看了那些帖子後,感覺更加迷茫了。

個人認爲,關鍵是理解它的內在機制,這纔是核心所在。

下面,我把一些別人比較好的心得記錄一下,供大家參考。

準備工作

1、下載Heritrix-1.12.1

可以到SourceForge.net上去下載,下載地址鏈接爲:http://sourceforge.net/project/showfiles.php?group_id=73833&package_id=73980

需要下載的壓縮文件包有兩個,如下:

heritrix-1.12.1.zipheritrix-1.12.1-src.zip

2、解壓縮Heritrix-1.12.1文件包

在本地磁盤中解壓縮,隨便放在一個地方就行,用到的時候,直接從這兩個解壓縮的文件夾下面拷貝文件即可。

以我的爲例,我把他們解壓縮到了目錄E:/Heritrix下面,如圖所示:


開發環境

操作系統:Windows XP SP2

Heritrix版本:Heritrix-1.12.1

Eclipse版本:Eclipse 3.2.1

配置概述

Heritrix-1.12.1配置成功以後,工程的目錄下的內容如圖所示:

 

即後面我們新建的工程目錄D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1下面的文件內容。

配置過程

1、新建Java Project工程

在Eclipse中新建一個Java Project工程(注意:一定是Java Project的工程,不是Web Project工程),工程名稱爲Heritrix-1.12.1。

以我的爲例,對應地,工程Heritrix-1.12.1在本地磁盤目錄D:/eclipse-SDK-3.2.1-win32/workspace下面。

可以在目錄D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1下面看到:兩個工程屬性文件.classpath和.project、兩個文件目錄bin和src。

刪除掉兩個文件目錄bin和src。

2、向新建的Java Project添加Heritrix-1.12.1文件

(1) 將目錄E:/Heritrix/heritrix-1.12.1-src/heritrix-1.12.1/src/java/下面的三個目錄:org、com、st一起拷貝到新建工程Heritrix-1.12.1目錄下面(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1)。

(2) 將目錄E:/Heritrix/heritrix-1.12.1-src/heritrix-1.12.1/src/conf/下面的:三個目錄(包括:modules、profiles、selftest),以及四個文件(包括:heritrix.properties、jmxremote.password.template、heritrix.cacerts、jndi.properties)一起拷貝到新建的工程Heritrix-1.12.1目錄下面(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1)。

(3) 將目錄E:/Heritrix/heritrix-1.12.1-src/heritrix-1.12.1/src/resources/下面的三個文件(包括:arcMetaheaderBody.xsl、warcinfobody.xsl、README.txt,其中README.txt沒有用處是顯而易見的)拷貝到新建的工程Heritrix-1.12.1目錄下面(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1)。

(4) 將目錄E:/Heritrix/heritrix-1.12.1/heritrix-1.12.1/下面的webapps目錄拷貝到新建工程Heritrix-1.12.1目錄下面(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1),這裏,webapps目錄下面有兩個WAR包(即admin.war和selftest.war)。

3、修改新建的Java Project工程(名稱爲Heritrix-1.12.1)的配置文件

(1) 打開目錄D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1下面的.classpath文件,可以看到共有下面6行:

 



<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>

可以看到,新建Java Project工程(如我們的,名稱爲Heritrix-1.12.1)之後,src是資源目錄,所以在Eclipse開發平臺上,在src下面新建的資源目錄呈包結構組織。kind屬性指定工程中顯示的資源目錄,path指定了在該path(Eclipse默認爲src)下的資源目錄都呈包結構組織。

將上面的內容做很大的修改,修改內容如下所示:

 



<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/ant-1.6.2.jar"/>
<classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
<classpathentry kind="lib" path="lib/commons-cli-1.0.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
<classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient-3.0.1.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="lib/commons-net-1.4.1.jar"/>
<classpathentry kind="lib" path="lib/commons-pool-1.3.jar"/>
<classpathentry kind="lib" path="lib/dnsjava-1.6.2.jar"/>
<classpathentry kind="lib" path="lib/fastutil-5.0.3-heritrix-subset-1.0.jar"/>
<classpathentry kind="lib" path="lib/itext-1.2.0.jar"/>
<classpathentry kind="lib" path="lib/jasper-compiler-tomcat-4.1.30.jar"/>
<classpathentry kind="lib" path="lib/jasper-runtime-tomcat-4.1.30.jar"/>
<classpathentry kind="lib" path="lib/javaswf-CVS-SNAPSHOT-1.jar"/>
<classpathentry kind="lib" path="lib/je-3.0.12.jar"/>
<classpathentry kind="lib" path="lib/jetty-4.2.23.jar"/>
<classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
<classpathentry kind="lib" path="lib/libidn-0.5.9.jar"/>
<classpathentry kind="lib" path="lib/mg4j-1.0.1.jar"/>
<classpathentry kind="lib" path="lib/poi-2.0-RC1-20031102.jar"/>
<classpathentry kind="lib" path="lib/poi-scratchpad-2.0-RC1-20031102.jar"/>
<classpathentry kind="lib" path="lib/servlet-tomcat-4.1.30.jar"/>
<classpathentry kind="output" path=""/>
</classpath>

其中:

上面的<classpathentry kind="src" path=""/>中,指定src爲"",這表示,只要在該工程的根目錄下面建的目錄資源都呈現表結構組織;

上面的kind爲lib,對應的就是我們拷貝到工程目錄下面的lib(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1/lib),path的值就是該lib目錄(絕對路徑爲D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1/lib)下面的所有的jar文件。

注:其實.classpath不需要改的,也不需要把lib拷貝到D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1下面,因爲在Eclipse平臺的窗口裏,我們要通過【Build Path】來加入lib下面的26個包。

4、配置CLASSPATH

可以看到,目錄E:/Heritrix/heritrix-1.12.1-src/heritrix-1.12.1/lib/目錄下有26個JAR包(大小爲8.13MB),如圖所示:


這時,切換到Eclipse平臺的窗口,刷新該新建的Java Project工程(名稱爲Heritrix-1.12.1),會發現出現了很多包結構,但是有很多紅色錯誤的標記,如圖所示:


這是因爲還沒有設置CLASSPATH。右鍵單擊工程,選擇【Build Path】—> 【Add External Archives】在彈出的窗口中選擇添加目錄E:/Heritrix/heritrix-1.12.1-src/heritrix-1.12.1/lib下面的26個jar包文件,如圖所示:

 

現在可以看到,我們新疆的的Java Project工程(名稱爲Heritrix-1.12.1)中沒有紅色的錯誤標記了。

5、修改heritrix.properties屬性文件

打開heritrix.properties屬性文件,可以看到默認情況下,Heritrix-1.12.1的屬性文件如下所示:

##############################################################################
# H E R I T R I X P R O P E R T I E S
##############################################################################

# Properties with ''heritrix.'' or ''org.archive.crawler.'' prefix get loaded
# into System.properties on startup so available via System.getProperties.

# Version is filled in by the maven.xml pregoal. It copies here the project
# currentVersion property.
heritrix.version = @VERSION@

# Location of the heritrix jobs directory.
heritrix.jobsdir = jobs

# Default commandline startup values.
# Below values are used if unspecified on the command line.
heritrix.cmdline.admin =
heritrix.cmdline.port = 8080
heritrix.cmdline.run = false
heritrix.cmdline.nowui = false
heritrix.cmdline.order =
heritrix.cmdline.jmxserver = false
heritrix.cmdline.jmxserver.port = 8081

上面四行紅色標識的代碼行,一般來說,需要修改。

第一行,heritrix.version指定了Heritrix的版本號,因爲我們測試的是版本號爲1.12.1,修改爲:

heritrix.version = 1.12.1

第二行,heritrix.jobsdir指定了Heritrix在執行抓取任務時,抓取到的內容存放的目錄,默認在工程下面的jobs目錄下面。

第三行,heritrix.cmdline.admin指定了登錄WebUI時使用的帳號,默認爲空,可以自己隨意設定,設定需要按照一定的格式(用戶名:密碼),我們修改爲:

heritrix.cmdline.admin = shirdrn:maomao

其中,用戶名和密碼使用“:”分隔。

第四行,heritrix.cmdline.port指定了運行Heritrix後臺程序,監聽的WebUI使用的端口號,默認爲8080端口,可以設置一個當前沒有佔用的端口號,比如我們修改爲:

heritrix.cmdline.port = 8085

6、啓動Heritrix後臺程序

回到Eclipse平臺窗口,找到新建的Java Project工程Heritrix-1.12.1中,資源包org.archive.crawler下面的Java類文件Heritrix.java,右鍵單擊Heritrix.java文件,選擇【Run As】—> 【Java Application】選項,便看見Heritrix後臺已經啓動了,在Eclipse控制檯【Console】中可以看到啓動過程的詳細信息,如下所示:


信息的文本內容爲,可以參考如下:

05:32:29.765 EVENT Starting Jetty/4.2.23
05:32:30.078 WARN!! Delete existing temp dir C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/Jetty_127_0_0_1_8085__ for WebApplicationContext[/,jar:file:/D:/eclipse-SDK-3.2.1-win32/workspace/Heritrix-1.12.1/webapps/admin.war!/]
05:32:30.625 EVENT Started WebApplicationContext[/,Heritrix Console]
05:32:31.093 EVENT Started SocketListener on 127.0.0.1:8085
05:32:31.093 EVENT Started org.mortbay.jetty.Server@179c285
Heritrix version: 1.12.1

7、登錄WebUI

現在,可以成功登錄WebUI,設置抓取任務了。

在瀏覽器地址欄中鍵入地址鏈接 http://localhost:8085,可以看到WebUI登錄界面,如圖所示:


使用前面的配置的帳戶shirdrn:maomao就可以登錄了,登錄成功頁面如下所示:


 

以上是我以前在網上搜到的解決方案,但配置起來以後還存在以下問題。 問題截圖

 

 下面是對問題的解決方案。感覺不錯

http://hi.baidu.com/shirdrn/blog/item/cf712f4bb1fc84f483025c42.html

 

最後說明

Heritrix真正配置成功後,應該能夠進行抓取任務。有的時候,上面的配置能夠正常進行啓動Heritrix後臺程序,並且能夠登錄WebUI進行任務設置,但是抓取的時候就出問題了。問題可能是因爲安裝的時候配置有問題,也可能是在設置抓取任務的時候任務屬性設置有問題。

上面的配置已經經過測試了,登錄WebUI可以正常執行抓取任務。

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