几天前配置Eclipse +Heritrix,配了一天头晕脑胀,也没能让它跑起来。确切的说,WebUI登陆就不成功。中间几天想起来就倒胃,于是扔那不睬它忙了些其他的事情。春节晚会的全程都在翻论坛查银行卡和宿舍等资料,差点忘了零点之前回复大量的祝福短信,我真是勤奋……今天大年初一没事做,上午爬起来看看论坛和JUNJIN的反转剧,调节了调节心情,下午接着折腾Heritrix……用Eclipse运行的方法实在很繁琐,网上找的方法在我的机器上总不成功,深刻认识到……基于Linux的开源软件拿到Windows下都不是省油的灯……决定改行先按控制台配置,先让它能爬再说别的……下午配了个能运行的,写个笔记晾在这。
下载Heritrix
下载页面:http://crawler.archive.org/downloads.html,在此页面中选择 Sourceforge Downloads进入下载列表,选择一个版本的ZIP压缩包进行下载。我下载的版本是Heritrix-1.12.1,因为网上的说明好像都是针对这个版本的……
安装、配置Heritrix
1、将得到的Heritrix压缩包直接解压缩到某一目录,我选择的是D:\Heritrix。
2、将 \Heritrix 目录中的heritrix-1.12.1.jar文件解包,把 profiles\default 下的两个文件order.xml和seeds.txt复制到 \heritrix\conf 目录。
3、以文本编辑方式打开 \heritrix\conf 下的heritrix.properties文件,在“heritrix.cmdline.admin = ” 项的后面加入你所要设定的管理员账户和密码,用“:”分割,如:
heritrix.cmdline.admin = admin:admin
4、复制 \heritrix\conf 下的jmxremote.password.template文件到主目录\Heritrix 下,并更名为jmxremote.password。编辑此文件,更改最后两行"monitorRole @PASSWORD@"、"controlRole @PASSWORD@"中的"@PASSWORD@"为管理员密码。如:
monitorRole admin
controlRole admin
系统自带脚本运行
将cmd定位到 D:"heritrix"bin,执行 "heritrix --admin=admin:admin" 命令,即可启动 heritrix,
有一点需要注意,heritrix默认使用8080端口,要保证系统端口没有冲突。之后便可以访问 http://127.0.0.1:8080 或http://localhost:8080/ 使用 heritrix 提供的WUI,即Web管理端。并且使用"admin/admin"登录。
[2]选Jobs选项,设置抓取页为http://news.sohu.com/
1. frontier
org.archive.crawler.frontier.BdbFrontier 默认的不是这个,注意替换掉默认的,不然的话运行时会出现后面那个异常
2. scope
org.archive.crawler.scope.BroadScope
3. Prefetcher
org.archive.crawler.prefetch.Preselector
org.archive.crawler.prefetch.PreconditionEnforcer
4. Fetcher
org.archive.crawler.fetcher.FetchDNS
org.archive.crawler.fetcher.FetchHTTP
5. Extractor
org.archive.crawler.extractor.ExtractorHTTP
org.archive.crawler.extractor.ExtractorHTML
(这里可以按自己的需要多添几个,比如ExtractorSWF、ExtractorJS什么的,但是前两个是必不可少的)
6. Writer
org.archive.crawler.writer.MirrorWriterProcessor
7. PostProcessor
org.archive.crawler.postprocessor.CrawlStateUpdaterorg.archive.crawler.postprocessor.LinksScoper
org.archive.crawler.postprocessor.FrontierScheduler
(FrontierScheduler可以自行扩展)
选择Jobs菜单的“Settings”项进入运行参数设置页面。进入运行参数设置页面后,有很多可以设定的参数,点击设置框左边的“?”号,可看到弹出的帮助信息。最简单的可只更改“HTTP-Header”项中的内容,更改其属性值“user-agent”和“from”。
设置完成后,点击Submit job菜单项,即完成全部任务的建立工作。
通过提交设定好的任务,页面返回到Jobs的主菜单,在页面下方有任务的一些信息和设置菜单。此时点击左上角的“Console”菜单,返回主页面,点击“Start”可以开始任务。点击左下角红色框标出的“Refresh”选项,可以刷新任务状态。要暂停当前任务。可点击任务状态旁的选项“Pause”。抓取页面会存放在工作目录下的mirror文件夹内。
每一个站点的URL地址即为保存的目录名称,其文件和对应的服务目录结构被保存到此目录下面。此处看出,Heritrix更像一个强大的网站下载工具。至此,Heritrix的简单抓取任务设置描述完毕。
补充:为了在抓取时不保存其他无关页面,可扩展FrontierScheduler来抓取特定的内容。
如果出现这样的异常:
第一条异常
Time: ??. 26, 2009 06:52:05 GMT
Level: SEVERE
Message: On crawl: news Unable to setup crawl modules
Exception: java.lang.ClassCastException: org.archive.crawler.settings.ModuleType cannot be cast to org.archive.crawler.framework.Frontier
Stacktrace: java.lang.ClassCastException: org.archive.crawler.settings.ModuleType cannot be cast to org.archive.crawler.framework.Frontier
at org.archive.crawler.framework.CrawlController.setupCrawlModules(CrawlController.java:654)
at org.archive.crawler.framework.CrawlController.initialize(CrawlController.java:377)
at org.archive.crawler.admin.CrawlJob.setupForCrawlStart(CrawlJob.java:846)
at org.archive.crawler.admin.CrawlJobHandler.startNextJobInternal(CrawlJobHandler.java:1142)
at org.archive.crawler.admin.CrawlJobHandler$3.run(CrawlJobHandler.java:1125)
at java.lang.Thread.run(Unknown Source)
第二条异常
Time: ??. 26, 2009 06:52:05 GMT
Level: WARNING
Message: Value of illegal type: 'org.archive.crawler.settings.ModuleType', 'org.archive.crawler.framework.Frontier' was expected.: Value of illegal type: 'org.archive.crawler.settings.ModuleType', 'org.archive.crawler.framework.Frontier' was expected.
Exception: No associated exception.
有可能是Frontier设置错误导致的。检查一下上面配置处理链的部分,是否选中的是:org.archive.crawler.frontier.BdbFrontier