社区
Web 开发
帖子详情
heritrix网页登陆后设置选项无MirrorWriterProcessor只有默认的ARCWriterProcessor,且不可修改添加
sweetheart1986
2009-02-25 10:46:22
heritrix网页登陆后设置选项无MirrorWriterProcessor只有默认的ARCWriterProcessor,且不可修改添加,麻烦各位高手指点,感激不尽!!!
...全文
432
5
打赏
收藏
heritrix网页登陆后设置选项无MirrorWriterProcessor只有默认的ARCWriterProcessor,且不可修改添加
heritrix网页登陆后设置选项无MirrorWriterProcessor只有默认的ARCWriterProcessor,且不可修改添加,麻烦各位高手指点,感激不尽!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asdfghjk12345678
2012-10-20
打赏
举报
回复
感谢!!我也遇到这个问题
evaxiao
2011-05-08
打赏
举报
回复
谢谢你!我也遇到了同样的问题。
lshq
2009-05-06
打赏
举报
回复
不错,节省了我的不少时间,谢谢!
sweetheart1986
2009-02-26
打赏
举报
回复
问题解决了,把它拿出来共享一下
sweetheart1986
2009-02-26
打赏
举报
回复
Heritrix的Modules界面不能改变选择项的问题[b]
[/b]
在Eclipse环境中配置好我的Heritrix后,就可以使用Heritrix了。(参见:在Windows平台上配置Heritrix的Eclipse开发环境)。很快我就遇到了第一个问题(实际是两个,但是只能先解决第一个了)。我在新建Job的时候,按照书上说的,先选Jobs,再With defauls,再输入名字,然后”Modules”,这时候我发现我的界面和书上说的不一样。书上说这个界面里面应该是显示现在已经缺省设置的 Scope,Frontier,PreProcessor,Fetcher,Extractor,Writer,PostProcessor,然后用户可以选择添加或者替换这些Class的。但是我的界面里面只显示了现在设置的Class,可以改变次序,可以删除。但是所有本来应该是添加新Class或者改变现在选择项目的功能在我的界面上都没有。例如书上说缺省有CrawlScope,可以选HostScope,我这里只有DecidingScope,没有下面的列表框可以选择其他的。我的Writer也只有ARCWriterProcessor,没有其他的。
我本想先这么试试看的,就没有改选择而是直接启动了Job。首先发现速度非常慢,抓我这个www.sitemasterkit.com,一共100 来页文章用了一个小时(我自己拷都比这快,猜测可能和我在Eclipse中运行有关系,先不管它)。然后发现抓完存在本地的是一个XXXX.arc.gz 的文件。先用WinZIP将其解成XXXX.arc,但是再想解这个arc文件,无论7-ZIP,WinZIP还是WinRAR都报错。我想可能是 ARCWriterProcessor的问题。在工程目录中查找,发现和ARCWriterProcessor在同一个Package中还有好几个其他的 Processor,尤其是MirrorWriterProcessor应该是只做镜像的,好像是我的需求。现在要想办法把它用上。
因为我知道所有Job的设置都在 order.xml里面,我先看看里面有没有关于Writer的设置。很容易找到了关于ARCWriterProcessor的部分。
<map name=”write-processors”>
<newObject name=”Archiver” class=”org.archive.crawler.writer.ARCWriterProcessor”>
<boolean name=”enabled”>true</boolean>
<newObject name=”Archiver#decide-rules” class=”org.archive.crawler.deciderules.DecideRuleSequence”>
<map name=”rules”>
</map>
</newObject>
<boolean name=”compress”>true</boolean>
<string name=”prefix”>IAH</string>
<string name=”suffix”>${HOSTNAME}</string>
<long name=”max-size-bytes”>100000000</long>
<stringList name=”path”>
<string>arcs</string>
</stringList>
<integer name=”pool-max-active”>5</integer>
<integer name=”pool-max-wait”>300000</integer>
<long name=”total-bytes-to-write”>0</long>
<boolean name=”skip-identical-digests”>false</boolean>
</newObject>
</map>
先简单试试,把 ARCWriterProcessor改成了MirrorWriterProcessor。然后生成一个新Job看看。结果浏览器得到了一个 java.lang.ClassCastException: java.lang.String cannot be cast to org.archive.crawler.settings.ListType。在我的Eclipse窗口可以看到:
03/11/2008 03:52:15 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘compress’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 181, column: 48
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘prefix’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 182, column: 43
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ’suffix’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 183, column: 51
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘max-size-bytes’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 184, column: 59
我想应该是order.xml中后面部分的属性是为 ARCWriterProcessor服务的,而MirrorWriterProcessor不认。没办法,只好下决心先来解决不能选择其他的Class 的问题了。希望通过界面选择合适的Writer可以帮我正确设置需要的参数。
首先需要定位是在哪里确定显示这个页面的。这个页面上有几个标志字符串,例如“Select Writers”。在Eclipse中全局查找,发现这个页面是在webapps->admin->jobs下面的Modules.JSP生成的,其中有这么一个调用(我没用过JSP,猜想和Java语法差不多吧)
<p>
<b>Select Writers</b>
<i>Processors that write documents to archive files</i>
<p>
<%=buildModuleMap(
(ComplexType)settingsHandler.getOrder().getAttribute(
CrawlOrder.ATTR_WRITE_PROCESSORS),
Processor.class,
“Writers”)%>
看样子选择部分就是靠这个buildModuleMap来生成的,这个函数的定义在webapps->admin->includes ->modules.jsp(还有一个在webapps->admin->includes-> jobcredentials.jsp,但是通过加打印发现调用的是这个)。其中主要有3部分功能,第一部分用于显示现在已经选择的项目,第二部分是统计还有多少可以选择的配置项目,第三部分就是如果判断还有可以选择的配置项目,就显示让用户选择。跟踪发现就是第二部分数出的数字 unusedOptions.size()是0,所以第三部分没有得到调用。再向前跟踪,发现第二部分的循环是基于函数第一句的一个变量定义来的, List availableOptions = getOptionsForType(allowableType),这里的availableOptions里面的元素个数是0,造成第二部分也没有执行。现在看起来问题就是出在getOptionsForType(allowableType)没有返回需要的列表。
进入 getOptionsForType函数,基本一眼就可以看出问题了。这个函数里面除了return CrawlJobHandler.loadOptions(optionsFilename);一句有意义的话以外,就是前面的设置变量和后面的 Exception处理了。基本猜测就是出了Exception。加打印看了一下(发现Eclipse可以直接修改代码不重启就生效,和解释语言差不多了),果然是在Classpath没有找到需要的文件。看了一下,找相关的Options文件是在Modules相对路径下的,而Modules目录是在 conf目录下。在Eclipse里面设置conf为Classpath( 在Eclipse的Run Dialog中,Classpath标签Table,选中User Entries,然后右边会有Advance选项,选Add External Folder,把你的Conf加进去就行了)。再试,在Modules页面中的功能正常了。
简单来看,这真的是一个小问题。但是却用了我差不多4个小时。实际还是网上相关的资源太少了,例如我就没有找到一个详细一些地说如何在 Eclipse下配置Heritrix的文章,只好自己写一篇了。而我实际对Eclipase和Heritrix都是新手。本文我写得这么详细,也就是希望能对万一遇到这个问题的朋友有个帮助。也希望大家能一起努力让网上的相关文章逐渐多起来。
网络爬虫
heritrix
的详细配置过程,解决无
Mi
rror
Write
r
Processor
问题
Mi
rror
Write
r
Processor
网络爬虫
heritrix
数据挖掘,,经过一段时间学习初步掌握了爬虫的运行,现在将自己的一点点心得与网上收集的资料初步整理如下:一.所需软件:jdk1.5以上版本、eclipse3.0以上、
heritrix
1.12.1-src.zip与1.12.1.zip、或1.14版本二、环境变量
设置
:.运行eclipse必须先安装JDK,Jdk
Heritrix
Eclipse配置和使用
1、首先在 Eclipse 中新建 Java 工程 ,工程名自取,以My
Heritrix
为例。利用下载的源代码包根据以下步骤来配置这个工程。 2、导入类库
Heritrix
所用到的工具类库都在
heritrix
-1.14.4-src\lib 目录下,需要将其导入 My
Heritrix
工程。 1)将
heritrix
-1.14.4-src 下的 lib 文件夹拷贝到 MyHeritri...
【爬虫】
Heritrix
3.2安装和运行实例
Heritrix
安装 本地环境 系统:Ubuntu 16.04
Heritrix
版本:3.2.0 JDK版本:1.7(
Heritrix
3.2不支持Java8) 下载解压 下载方式如下 在CSDN上查找可以直接通过命令行使用的
Heritrix
3.2版本,然后解压到工作目录,通过执行二进制文件运行 也可以在GitHub下载release版本,然后通过IDE直接编译运行 如果能访...
【
Heritrix
基础教程之1】在Eclipse中配置
Heritrix
一、新建项目并将
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
【
Heritrix
基础教程之1】在Eclipse中配置
Heritrix
分类: ...
一、新建项目并将
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包下...
Web 开发
81,094
社区成员
341,710
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章