刚刚进行了Heritrix的配置,参考了网上很多资料,最后终于配置成功。写下心得:
以下有些语句直接拷贝过来的,我只是把有问题的地方,修改一下。
新建Java Project工程
在Eclipse中新建一个Java Project工程,删除掉工程中的两个文件目录bin和src(后面会自动添加)。
向新建的Java Project添加Heritrix-1.14.4文件
将目录heritrix-1.14.4-src\src\java\下面的三个目录:org,com,st一起拷贝到新建工程目录下面。
将目录heritrix-1.14.4-src\src\conf\下面的:三个目录(包括:modules、profiles、selftest),以及四个文件(heritrix.properties、jmxremote.password.template、heritrix.cacerts、jndi.properties)一起拷贝到新建的工程目录下面。
将目录heritrix-1.14.4-src\src\resources\下面的三个文件,包括:arcMetaheaderBody.xsl等拷贝到新建的工程目录下,会弹出已存在,直接覆盖。
将目录heritrix-1.14.4\下面的webapps目录拷贝到新建工程目录下这里,webapps目录下面有两个WAR包(即admin.war和selftest.war)。
刷新工程右键单击工程,将heritrix-1.14.4\下的lib文件夹拷贝到工程下。然后将文件的路径加入工程中。
add External Archives在弹出的窗口中选择添加目录 heritrix-1.14.4-src\heritrix-1.14.4\lib。
修改工程里class文件中的第3行和倒数第2行为
<classpathentry kind="src" path=""/>(此处将path后面的src改为空)
<classpathentry kind="output" path=""/>(修改同上)
修改heritrix.properties属性文件
修改heritrix.version=1.14.4,heritrix.jobsdir到抓取的数据存储的位置(默认的job),heritrix.cmdline.admin(admin:admin)登录账号密码,heritrix.cmdline.port(8888)运行的端口(此处要小心,首先确定你自己的8888端口未被占用,否则换其它的端口即可)。
上述一切修改完后,会出现sun.net.www.protocol.file.FileURLConnection的错误
这是因为是sun包是受保护的包,默认为只有sun公司的软件才能使用,进入Windows–Preferences—Java—Compiler—Errors/Warnings— Deprecated and trstricted API— Forbidden reference (access rules):— change to warning,对受保护的包使用warning即可。
运行package org.archive.crawler包中Heritrix.java文件即可完成配置
在浏览器中输入http://localhost:8888/即进入页面
使用:
(1) 登陆后,在导航栏选择”Jobs”,呈现的第一项是”Create New Job”,选择第四小项”With defaults”。输入项的前两项Name和Description随意,Seeds非常重要:http://www.163.com/ 注意最后一个反斜杠必须。
(2) 选择下边的”Modules”,进入Module配置页(Heritrix的扩展功能都是通过模块概念实现的,可以实现自己的模块完成自己想要的功能)。其中第一项 “Select Crawl Scope” 使用默认的 “org.archive.crawler.deciderules.DecidingScope”。倒数第三项 “Select Writers ” 删除默认的 “org.archive.crawler.writer.ARCWriterProcessor” ,后添加”org.archive.crawler.writer.MirrorWriterProcessor”,这样执行任务的时候抓取到的页面会以镜像的方式放在本地的目录结构中,而不是生成ARC存档文件。
(3) 选择”Modules”右边的”Submodules”,在第一项内容中 “crawl-order ->scope->decide-rules->rules” 删除掉其中的 “acceptIfTranscluded” (org.archive.crawler.deciderules.TransclusionDecideRule) 的这一项抓取作用域的规则。否则当Http请求返回301或者302时Heritrix会去抓取其他域下的网页。
(4) 在第二行导航栏中选择”Settings”进入Job的配置页面,其中主要修改两项:http-headers 下的user-agent 和 from:
user-agent主要是指运行Heritrix的用户的配置,即使用者的机器配置。首先是浏览器的选择,比如IE/7.0;其中 @VERSION@是指使用Heritrix的版本号,这里应该是1.14.4;最后面的PROJECT_URL_HERE是指本机地址:http://127.0.0.1。
from 改为自己的邮箱
(5) 在第二行导航栏中选择最右边的”Submit job”
(6) 在第一行导航栏中选择第一项的”Console”,点击”Start”,抓取任务正式开始,时间长短有网络状况和所抓取网站的深度有关。