heritrix1.12.1不用eclipse的配置

来源:互联网 发布:网络启动设置 编辑:程序博客网 时间:2024/06/05 14:32

终于让一个Heritrix能爬了……不用Eclipse的简单配置方法

几天前配置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/

处理器链的设置方法很简单,就是在下拉列表中选择好,点击Add添加即可。要注意每一项处理器设置都是有顺序关系的。每一项的名称其实都揭示了其作用。
 
这些处理器分别是:

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.CrawlStateUpdater
org.archive.crawler.postprocessor.LinksScoper
org.archive.crawler.postprocessor.FrontierScheduler

(FrontierScheduler可以自行扩展)
      
选择Jobs菜单的“Settings”项进入运行参数设置页面。进入运行参数设置页面后,有很多可以设定的参数,点击设置框左边的“?”号,可看到弹出的帮助信息。最简单的可只更改“HTTP-Header”项中的内容,更改其属性值“user-agent”和“from”。
 
其中“user-agent”中的“PROJECT_URL_HERE”对应自己的完整URL地址,“from”中设置自己的合法email地址,这两项设置其实可随便设置,只要格式规则合法即可。图中的@VERSION@可设置为1.12.1,即1.12.1版本的。

设置完成后,点击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 

原创粉丝点击