关于搜索引擎书籍中国目前比较少,有过这方面了解的 朋友一般都看过2007年人民邮电出版 lucene 2.0+heritrix 这本书吧。本人感觉还不错,理论知识较少点,具体步骤还比较详细。适合初学者。
简单介绍下heritrix : heritrix 是Java编写的开源爬虫。 扩展性比较好,但是配置适合的采集规则,比较复杂难理解。适合学习和研究。
此书中的heritrix 在eclipse 中的配置 写的不够详细,我把自己成功的配置贡献给大家。
<1>首先要去官网下载最新版本的heritrix 。下载地址为:
http://sourceforge.net/project/showfiles.php?group_id=73833&package_id=73980
选择文件注意为zip后缀格式的,gz格式为 linux下文件。
选择这两个文件heritrix -1.14.3-src.zip heritrix -1.14.3.zip 下载。
<2>
把下载好的文件解压。
<3>
配置过程:
1、新建Java Project工程
在Eclipse 中 新建一个Java Project工程(注意:一定是Java Project的工程,不是Web Project工程),工程名称为Heritrixproject。(名字可随便起)
以我的为例,对应地,工程 Heritrixproject在本地磁盘目录D:/eclipse -SDK-3.2.1- win32/workspace下面。
可以在目录D:/eclipse -SDK-3.2.1-win32/workspace/Heritrixproject 下面看到:两个工程属性文件.classpath和.project、两个文件目录bin和src。
删除掉两个文件目录bin和src。
2、向新建的Java Project添加Heritrix -1.14.3文件
(1) 将目录E:/Heritrix /heritrix -1.14.3-src /heritrix -1.14.3/src/java/下面的三个目录:org、com、st一起拷贝到 新建工程Heritrixproject目录下面(绝对路径为D:/eclipse -SDK- 3.2.1-win32/workspace/Heritrixproject)。
(2) 将目录E:/Heritrix /heritrix -1.14.3-src /heritrix -1.14.3/src/conf/下面的:三个目录(包括:modules、 profiles、selftest),以及四个文件(包括:heritrix .properties、 jmxremote.password.template、heritrix .cacerts、 jndi.properties)一起拷贝到新建的工程Heritrixproject目录下面。
(3) 将目录E:/Heritrix /heritrix -1.14.3-src /heritrix -1.14.3/src/resources/下面的三个文件(包 括:arcMetaheaderBody.xsl、README.txt,其中README.txt没有用处是显而易见的)拷贝到新建的工程 Heritrixproject目录下。
(4) 将目录E:/Heritrix /heritrix -1.14.3 /heritrix -1.14.3/下面的webapps目录拷贝到新建工程 Heritrixproject目录下面(绝对路径为D:/eclipse -SDK-3.2.1-win32/workspace/Heritrix -1.14.3),这里,webapps目录下面有两个WAR包(即 admin.war和selftest.war)。
(5)将E:/Heritrix /heritrix -1.14.3 /heritrix -1.14.3/下的lib文件夹拷贝到工程下。
3、修改新建的Java Project工程的配置文件
(1) 打开目录D:/eclipse -SDK-3.2.1-win32/workspace/Heritrixproject 下面的.classpath文件,可以看到共有下面6行:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse .jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
可以看到,新建Java Project工程之后,src是资源目录,所以在Eclipse 开发平台上,在src下面 新建的资源目录呈包结构组织。kind属性指定工程中显示的资源目录,path指定了在该path(Eclipse 默 认为src)下的资源目录都呈包结构组织。
将上面的内容做很大的修改,修改内容如下所示:(注意:这个地方里面的lib下的jar就是拷 贝到工程下lib里面的jar。如果你用的最新版本的可能与这个jar文件不一样,这个你就要做相应的修。此时的最新版本为heritrix -1.14.3 )
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse .jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/ant-1.6.2.jar"/>
<classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
<classpathentry kind="lib" path="lib/commons-cli-1.0.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
<classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-io-1.3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.3.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="lib/commons-net-1.4.1.jar"/>
<classpathentry kind="lib" path="lib/commons-pool-1.3.jar"/>
<classpathentry kind="lib" path="lib/dnsjava-2.0.3.jar"/>
<classpathentry kind="lib" path="lib/fastutil-5.0.3-heritrix -subset-1.0.jar"/>
<classpathentry kind="lib" path="lib/itext-1.2.0.jar"/>
<classpathentry kind="lib" path="lib/jasper-compiler-tomcat-4.1.30.jar"/>
<classpathentry kind="lib" path="lib/jasper-runtime-tomcat-4.1.30.jar"/>
<classpathentry kind="lib" path="lib/javaswf-CVS-SNAPSHOT-1.jar"/>
<classpathentry kind="lib" path="lib/je-3.3.75.jar"/>
<classpathentry kind="lib" path="lib/jetty-4.2.23.jar"/>
<classpathentry kind="lib" path="lib/jets3t-0.5.0.jar"/>
<classpathentry kind="lib" path="lib/junit-3.8.2.jar"/>
<classpathentry kind="lib" path="lib/jericho-html-2.6.jar"/>
<classpathentry kind="lib" path="lib/libidn-0.5.9.jar"/>
<classpathentry kind="lib" path="lib/mg4j-1.0.1.jar"/>
<classpathentry kind="lib" path="lib/poi-2.0-RC1-20031102.jar"/>
<classpathentry kind="lib" path="lib/poi-scratchpad-2.0-RC1-20031102.jar"/>
<classpathentry kind="lib" path="lib/servlet-tomcat-4.1.30.jar"/>
<classpathentry kind="output" path=""/>
</classpath>
其中:
上面的<classpathentry kind="src" path=""/>中,指定src为"",这表示,只要在该工程的根目录下面建的目录资源都呈现表结构组织;
上面的kind为lib,对应的就是我们拷贝到工程 目录下面的lib,path的值就是该lib目录下面的所有的jar文件。
4.配置外部jar包,
切换到eclipse 窗口下,刷新下工程。
右键单击工程,选择【Build Path】—> 【Add External Archives】在弹出的窗口中选择添加目录heritrix -1.12.1-src /heritrix -1.12.1/lib。
再次刷新下工程。没有错误提示了。
5、修改heritrix .properties属性文件
打开heritrix .properties 属性文件,可以看到默认情况下,Heritrix -1.14.3的属性文件如下所示:
##############################################################################
# H E R I T R I X P R O P E R T I E S
##############################################################################
# Properties with 'heritrix .' or 'org.archive.crawler.' prefix get loaded
# into System.properties on startup so available via System.getProperties.
# Version is filled in by the maven.xml pregoal. It copies here the project
# currentVersion property.
heritrix .version = @VERSION@
# 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 =
heritrix .cmdline.port = 8080
heritrix .cmdline.run = false
heritrix .cmdline.nowui = false
heritrix .cmdline.order =
heritrix .cmdline.jmxserver = false
heritrix .cmdline.jmxserver.port = 8081
上面四行红色标识的代码行,一般来说,需要修改。
第一行,heritrix .version指定了Heritrix 的 版本号,因为我们测试的是版本号为1.14.3,修改为:
heritrix .version = 1.14.3
第二行,heritrix .jobsdir指定了Heritrix 在 执行抓取任务时,抓取到的内容存放的目录,默认在工程下面的jobs目录下面。
第三行,heritrix .cmdline.admin指定了登录WebUI时使用的帐号,默认为空,可以自己随 意设定,设定需要按照一定的格式(用户名:密码),我们修改为:
heritrix .cmdline.admin = admin:admin
其中,用户名和密码使用“:”分隔。
第四行,heritrix .cmdline.port指定了运行Heritrix 后 台程序,监听的WebUI使用的端口号,默认为8080端口,可以设置一个当前没有占用的端口号,比如我们修改为:
heritrix .cmdline.port = 9090
、启动Heritrix 后 台程序
回到Eclipse 平 台窗口,找到新建的Java Project工程Heritrixproject中,资源包org.archive.crawler下面的Java类文件Heritrix .java,右键单击Heritrix .java 文件,选择【Run As】—> 【Java Application】选项,便看见Heritrix 后 台已经启动了,在Eclipse 控制台【Console】中可以看到启动过程的详细信息,如 下所示:
7、登录WebUI
现在,可以成功登录WebUI,设置抓取任务了。
在浏览器地址栏中键入地址链接 http://localhost:9090 ,可以看到WebUI登录界面.
至此heritrix 的 配置就完成了,以后就要开始抓起信息,后面我还会把heritrix 的抓取配置分享给大家。
补充几点配置经验:
进入网页运行时有几个重要的job setting,是我这两天的体验
【http- headers】:user-agent 为浏览器名/版本+...+heritrix 版 本+....+本机ip(估计可以算便填一个)
【e-mail】: 随便填一个
【frontier】:retry- delay-seconds与max-retries两项数值改小,以免碰上坏链接会卡死
Modules中的Writers改成MirrorWriterProcessor,这样网页以镜像方式存储