目前 Heritrix 的最新版本是 3.1.0(2011-10-21 发布)
讲了 1.14.4 版本的安装和使用
讲了如何扩展 1.14.4 版本其中的模块
本文讲如何安装和使用 Heritrix 最新的 3.1.0 版
下载:
在 Eclipse 中的配置
首先在 Eclipse 中新建 Java 工程 MyHeritrix3。然后利用下载的源代码包根据以下步骤来配置这个工程。
1. 导入类库
Heritrix 所用到的工具类库都在 heritrix-3.1.0-dist.zip 的 \lib 目录下,需要将其导入 MyHeritrix3 工程。
1)将 heritrix-3.1.0-dist 下的 lib 文件夹拷贝到 MyHeritrix3 项目根目录;
2)在 MyHeritrix3 工程上右键单击选择“Build Path -> Configure Build Path …”,然后选择 Library 选项卡,单击“Add JARs …”。
3)在弹出的“JAR Selection”对话框中选择 MyHeritrix3 工程 lib 文件夹下所有的 jar 文件,然后点击 OK 按钮。
2. 拷贝源代码
将 heritrix-3.1.0\engine\src\main\java 添加到Eclipse的src目录,以及:heritrix-3.1.0\commons\src\main\java 目录 和 heritrix-3.1.0\modules\src\main\java 目录。
这样你就可以删除heritrix-commons-3.1.0.jar,heritrix-engine-3.1.0.jar,heritrix-modules-3.1.0.jar三个包的引用,直接使用源代码运行。
3、运行Heritrix 3.1
在 MyHeritrix 工程上右键单击选择“Run As -> Run Configurations”,选择 Java Application, 确保 Main 选项卡中的 Project 和 Main class 选项内容正确,其中的 Name 参数可以设置为任何方便识别的名字。
在 argument 项中设置启动参数-a admin:admin(输入启动账号),如下图:
然后运行Heritrix.java,如果一切正常, eclipse 运行结果如图:
可以看到程序已经在 8443 端口运行.
你可以通过:https://localhost:8443 访问Heritrix 3.1的管理端。要注意是 https , 不是 http
打开页面后会提示输入用户名和密码,输入 admin, admin
4、建立和配置抓取任务
登录管理控制台(用户名admin密码admin),在管理界面首页找到如下图这个位置:
这时候根据默认模版生成了一个抓取任务,但还不能抓取任何东西,我们需要通过配置文件的修改告诉服务器,我们要抓取什么。
在管理控制台的Job Directories中选择要配置的job(下图中myjob)
配置1和3的配置内容是一样的,operatorContactUrl写成 http://localhost, jobName和description随便写点东西即可。
配置2则是配置搜索种子网站的列表,我这里先写了一个http://www.sina.com.cn,先抓取新浪网站试试。
点击最上面的“Save changes"保存所有的配置文件。
这三个地方配置好就可以运行这个抓取任务试试了。
这时候需要执行如下操作(回到myjob的配置界面),让任务运行起来:
1)点击“build”编译当前的配置。
2)点击“launch”按钮运行当前任务至挂起状态,如果job已经运行,则先点击“teardown”按钮;
3)这时任务处于挂起状态,点击“unpause”即立即启动任务。
如果系统正常运行,会有如下类似提示信息:
在项目的jobs\test\20131226062239\warcs目录下有一个逐步增大的文件,这就是抓取下来的网页。
如果要看到每个抓取的页面,可以将配置文件的warcWriter这个bean的class改为org.archive.modules.writer.MirrorWriterProcessor,这样就下载的网页是以镜像文件的形式保存在,一般存放在项目根目录下的mirror目录下。
这种方式是较刻板的.因为它是直接将warcWriter bean 的 class 改了,但里面的属性还是之前类的。如果把属性的注释打开,会报错,因为 MirrorWriterProcessor 没有那些 property, 所以最好是自己再定义一个 bean. 然后在配置中引用它:
定义上面三个 bean. 然后再在 dispositionProcessors 中将 processors 的引用改成 mirrorWriter: