一、新建项目并将Heritrix源码导入
1、下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip两个压缩包,并解压,以后分别简称SRC包和ZIP包;
2、在Eclipse下新建Java项目,取名Heritrix.1.14.4;
3、复制SRC包下面src/java文件夹下org和st两个文件夹到项目中的src包下;
4、复制SRC包下src下conf文件夹到项目根目录;
5、复制SRC包下lib文件夹到项目根目录;
6、复制ZIP包下webapps文件夹到项目根目录;
7、修改项目下conf下heritrix.properties文件
heritrix.version = <span style="color:#ff0000;">1.14.4</span> # 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 = <span style="color:#ff0000;">admin:admin</span> heritrix.cmdline.port = <span style="color:#ff0000;">8080</span>主要修改 version, 用户名、密码及端口号
然后,就可以从http://127.0.0.1:8080/中登录系统。
在Liunx上运行heritrix
(1)export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/jediael/Heritirx1.14.4/lib/*:/home/jediael/Heritirx1.14.4/bin/*:/home/jediael/Heritirx1.14.4/conf/*
(2)cp -r webapps/ bin/
(3)cd bin
(4)java org.archive.crawler.Heritrix
注意此种方法只能在本机上通过127.0.0.1来进行访问,因为代码中写了:
final String ROOTURI = "127.0.0.1:" + Integer.toString(port);
String selfTestUrl = "http://" + ROOTURI + '/';
即只用于本机测试。
二、配置爬虫任务并开始下载
1、登录系统 admin/admin
2、点击Jobs--->create new job---->with defaults
每次新建一个job,都等于创建一个新的order.xml。在Heritrix中,每个任务对应一个order.xml,用于描述任务的属性。它用于指定Job的Processor类、Frontier类、Fetcher类、抓取时的最大线程数、最长超时等属性。
3、输入基本信息,注意seeds中最后必须有一个"/"
4、选择下边的"Modules",进入Module配置页(Heritrix的扩展功能都是通过模块概念实现的,可以实现自己的模块完成自己 想要的功能)。其中第一项 "Select Crawl Scope" 使用默认的"org.archive.crawler.deciderules.DecidingScope" 。倒数第三项 "Select Writers " 删除默认的 "org.archive.crawler.writer.ARCWriterProcessor" ,后添加 "org.archive.crawler.writer.MirrorWriterProcessor",这样执行任务的时候抓取到的页面会以镜像的方式放在本地的 目录结构中,而不是生成ARC存档文件。
5、选择"Modules"右边的"Submodules",在第一项内容中 "crawl-order ->scope->decide-rules->rules" 删除掉其中的 "acceptIfTranscluded" (org.archive.crawler.deciderules.TransclusionDecideRule) 的这一项抓取作用域的 规则。否则当Http请求返回301或者302时Heritrix会去抓取其他域下的网页。
6、在WUI的第二行导航栏中选择"Settings"进入Job的配置页面,其中主要修改两项:http-headers 下的user-agent 和from,他们的"PROJECT_URL_HERE" 和 "CONTACT_EMAIL_ADDRESS_HERE" 替换为自己的内容 ("PROJECT_URL_HERE" 要以 "http://" 开头)
7、在WUI的第二行导航栏中选择最右边的"Submit job"
8、在WUI的第一行导航栏中选择第一项的"Console",点击"Start",抓取任务正式开始,时间长短有网络状况和所抓取网站的 深度有关。点击"refresh"可以监控下载情况
还可点击logs等观察日志。
9、默认情况下,文件下载至"项目位置\jobs"。
三、一些说明
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.<clinit>() TLD list unavailable
java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at org.archive.util.ArchiveUtils.<clinit>(ArchiveUtils.java:759)
解决:将heritrix-1.14.4-src.zip解压中src/resources/org/archive/util中tlds-alpha-by-domain.txt文件复制到工程中org.archive.util包下。
四、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中的一些配置项
修改下载文件的路径