您的位置:首页 > 理论基础 > 计算机网络

网络爬虫heritrix的详细配置过程,解决无MirrorWriterProcessor问题

2009-03-01 18:49 489 查看
MirrorWriterProcessor

 

网络爬虫heritrix数据挖掘,,经过一段时间学习初步掌握了爬虫的运行,现在将自己的一点点心得与网上收集的资料初步整理如下:
一.所需软件:jdk1.5以上版本、eclipse3.0以上、heritrix1.12.1-src.zip与1.12.1.zip、或1.14版本
二、环境变量设置:
.运行eclipse必须先安装JDK,Jdk安装环境变量设置:我的电脑→属性→高级→环境变量→系统变量→path添加路径分号隔开,classpath则要自己新建了
java_home=C:/Program Files/Java/jdk1.5.0_17(可不设)
classpath=./;C:/ProgramFiles/Java/jdk1.5.0_17/lib/tools.jar;C:/Program Files/Java/jdk1.5.0_17/lib/dt.jar;C:/Program Files/Java/jre1.5.0_17/lib
path=C:/Program Files/Java/jdk1.5.0_17/bin
classpath为一点加斜杠,具体路径根据个人安装路径不同而更改。
三、下载地址与相关资料:
.我使用的版本号为1.12.1,官网开源地址为 http://sourceforge.net/project/showfiles.php?group_id=73833&package_id=73980,有各种版本,下载heritrix-1.12.1-src.zip和heritrix-1.12.1.zip两个软件包,即解压到相关目录,我选择的是d盘。 资料:csdn、Java eye等论坛以及和heritrix自带的docs用户手册以及开发手册
相关heritrix英文资料网址为http://crawler.archive.org/ http://weblab.infosci.cornell.edu/documentation/heritrixweblab_docs http://tech.groups.yahoo.com/group/archive-crawler/论坛需注册
四、配置heritrix:
应用批处理命令 heritrix.cmd 不能正常启动,存在路径配置等多个问题,命令行方式不好。建议在eclipse 中成功启动
此版本代码:heritrix_src.rar  heritrix.rar两个文件,分别命名为1包和2包,
eclipse中新建一个java project 工程,根目录下建立以下文件夹(可在eclipse运行目录下也可在工程目录下对文件夹粘贴复制~建议)
Src:  源代码包,复制1包中的 src/java 文件夹下的 com,org,st 三个文件夹即可,
Lib:  建类库包,复制1包或2包中的 lib 文件夹下的所有 jar包都一样可以,
Conf:  配置文件,复制2包conf文件夹即可,
Jobs:  空文件夹,存储爬行任务及结果,
Bin:  已自动建立,编译类文件,
Webapps:         网站文件,复制2包中的webapps文件夹即可。
) 将 D:/heritrix/heritrix-1.12.1.jar 解压,拷贝profiles复制到 /heritrix/conf 目录下,进行添加profile设置和读取时,一定要配置到conf目录下才行,或者是在磁盘根目录下
 
刷新工程,把lib下的jar包全部添加到工程中,即右键点击heritrix工程,右键属性---java build path---libraries--- add jars选择点击libraries→add jars→src下的所有lib包

s

可以看到eclipse环境窗口下的src上的错误标记已经消失了。

修改配置文件: heritrix.properties 打开 /heritrix/conf 下的heritrix.properties文件,在“heritrix.cmdline.admin = ” 项的后面加入你所要设定的管理员账户和密码,用“:”分割,如:heritrix.cmdline.admin = admin:admin我在此处将管理员账户和密码都设置为admin.

版本号可改,网络登陆密码要设,网络登陆端口号要设。
启动 org.archive.crawler.heritrix     java应用程序即可,网络登陆。(如果有命令行参数要设置,在属性框内有)
在eclipse中修改,heritrix/conf/jmxremote.password.template编辑该文件内容关于密码的部分:

monitorRole @PASSWORD@ ==> monitorRole admin

 
(部分论坛参考修改为:拷贝 D:/heritrix/conf/jmxremote.password.template 到 D:/heritrix下,并且重命名为"jmxremote.password"。之后编辑该文件内容关于密码的部分:monitorRole @PASSWORD@ ==> monitorRole admin、
controlRole @PASSWORD@   ==> controlRole    admin
但是自己没搞清楚为什么这样做,我直接在eclipse中修改,并没有复制)
下面启动在eclipse中右击工程src→ org.archive.crawler.heritrix→run as→java aplication即可,以下显示运行成功

网络登陆。(如果有命令行参数要设置,在属性框内有)
五、网络登陆
1.有一点需要注意,heritrix默认使用8080端口,要保证系统端口没有冲突。之后便可以访问 http://127.0.0.1:8080http://localhost:8080 使用 heritrix 提供的WUI,即Web管理端。并且使用"admin/admin"登录,如果<
12268
/span>8080占用则可以自己修改端口号,如8082,8083等等登陆时按相应网址访问。

2]选Jobs选项,设置抓取页为http://news.sohu.com 具体设置如图:
网址加/

图1: 处理链设置
           设置方法很简单,就是在下拉列表中选择好,点击Add添加即可。之后的设置可参考图中内容,要注意每一项处理器设置都是有顺序关系的。每一项的名称其实都揭示了其作用.
但是下面将出现1.12到1.14版本的无MirrorWriterProcessor问题
六、主要问题:
ARCWriterProcessor为web默认自己无法添加需要的MirrorWriterProcessor
      以下解释为Java eye网站收集的资料,想深入了解的同学可以仔细阅读,解决无mirrorwriterprocessor等选项问题可以直接看红色文字部分
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
【选择先简单试试,把 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( EclipseRun Dialog中,Classpath标签Table,选中User Entries,然后右边会有Advance选项,选Add External Folder,把你的Conf加进去就行了)。再试,在Modules页面中的功能正常了。
在eclipse运行窗口中选择run→runconfigurations→user entries→advance→
 
 
 

切记切记要添加1.12.1-src的conf而不是1.12.1的conf

简单来看,这真的是一个小问题。实际还是网上相关的资源太少了,例如我就没有找到一个详细一些地说如何在 Eclipse下配置Heritrix的文章,只好自己写一篇了。而我实际对Eclipase和Heritrix都是新手。本文我写得这么详细,也就是希望能对万一遇到这个问题的朋友有个帮助。也希望大家能一起努力让网上的相关文章逐渐多起来。】
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
 
 
按照上面的方法把问题解决后直接运行运行会报错,要么修改端口重新运行,或者重启heritrix可不改端口,继续以上步骤:~~~~~~~~~~~~
 
Jobs菜单的“Settings”项进入运行参数设置页面 . 进入运行参数设置页面后,有很多可以设定的参数,对于需要了解详情的设置,请点击设置框左边的“?”号,可看到弹出的帮助信息。最简单的可只更改“HTTP-Header”项中的内容,更改其属性值“user-agent”和“from”。修改内容如图2:
 

图2
                              
图中红色框内是修改前后对照。其中“user-agent”中的“PROJECT_URL_HERE”对应自己的完整URL地址,“from”中设置自己的合法email地址,这两项设置其实可随便设置,只要格式规则合法即可。图中的@VERSION@设置为1.12.1,即1.12.1版本的。
      设置完成后,点击如图3所示任务提交菜单项,即完成全部任务的建立工作

图3 任务提交菜单
    运行任务
           通过提交设定好的任务,页面返回到Jobs的主菜单,可看到如图4画面:
图4 任务已经建立
           在图4中,我们可以看到红色字说明一个任务已经被建立,在页面下方有任务的一些信息和设置菜单。此时点击左上角的“Console”菜单,返回主页面,看到如图5:

按照图5中的红色说明,点击“Start”可以开始任务。如图5:

图5已经激活的任务
           点击左下角红色框标出的“Refresh”选项,可以刷新任务状态。图6是刚刚开始的任务状态:
6中,我们可以看到,要暂停当前任务可点击任务状态旁的选项“Pause”。
抓取页面会存放在我的工作目录下的mirror文件夹内,如图7:
图6抓取后的网站和文件保存结构

图6中可以看到,每一个站点的URL地址即为保存的目录名称,
其文件和对应的服务目录结构被保存到此目录下面。此处看出,Heritrix更像一个强大的网站下载工具。           
         至此,Heritrix的简单抓取任务设置描述完毕,呵呵。。。
补充:为了在抓取时不保存其他无关页面,可扩展FrontierScheduler来抓取特定的内容。
打包成新的heritrix-1.12.1.jar 文件,运行cmd执行此操作
方法一:将多个文件打包
D:/heritrix/heritrix-1.12.1>jar cvf heritrix-1.12.1.jar com modules my org profi
les selftest st heritrix.properties jndi.properties arcMetaheaderBody.xsl warcin
fobody.xsl
方法二:将整个文件目录打包
D:/heritrix/heritrix-1.12.1>jar cvf heritrix-1.12.1.jar heritrix-1.12.1

 
 
七、heritrix扩展分类抓取与任务定制:
八、针对挖掘数据进行lucence全文检索:
 
未完待续,heritrix与lucecne学习经验交流QQ173939402
 
 
 
 
 
 
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐