Heritrix安装和配置

实话说我对于这东西是又爱又恨,整了我很久很久。都把电脑整的重装了,才好。

对于爬虫来说自己试过nutch,这个也是第一次弄,还好,没有辜负我。 

下面讲一下:


首先需要注意的是两个东西,

一个是需要下载两个包,很多人只下载了一个Heritrix-1.14.zip就以为可以了,然后找不到com文件夹,其实是缺少了一个一个包。

需要这两个包才可以,

heritrix-1.14.4-src.zip

heritrix-1.14.4.zip

一个装的是源码,一个装的是配置文件。



heritrix1.14.4 + myeclipse8.5



      一、在myeclipse中安装配置heritrix                    

        1、新建空的java 项目,在新建的时候选择

,命名为Heritrix;use project那个选项。

        2、把heritrix-1.14.4-src\src\java\目录下的org、st和com文件夹拷贝到Heritrix/src目录下;

        3、把heritrix-1.14.4\src下的wbapps文件夹拷贝到heritrix目录下;

        4、右击heritrix项目,点击properties ,通过JavaBuildPath,将heritrix-1.14.4-src下的lib目录下的所有包导入进来;(此时工程目录下会自动生成一个Referenced Libraries)

        5、解压缩heritrix-1.14.4目录下的heritrix-1.14.4.jar文件,把解压后的所有文件和文件夹(除org、st、com文件夹和heritrix.properties文件外)拷贝到heritrix目录下;

        6、将heritrix-1.14.4目录下的conf文件夹拷贝到heritrix目录下;并将heritrix目录下的profiles、modules、selftest文件夹移入conf文件夹中;

        7、打开eclipse下的heritrix/conf/heritrix.properties文件,找到"heritrix.cmdline.admin=",修改为“heritrix.cmdline.admin = admin:admin”;(admin:admin对应登录时的用户名:密码,可以根据自己喜好修改)

        8、Conf/jmxremote.password.template拷贝到heritrix目录下。改名为:jmxremote.password,最后再行改成:

                             monitorRole  admin

                             controlRole    admin

        9、找到org.archive.crawler包,运行Heritrix.java中的main函数。

        可能会出现的异常:

          1、在Heritrix.java中出现 File URLConnection 红叉 ;

                解决办法: 依次点击Window->java->Compiler->Errors/Warnings,将Forbidden reference(access rules)的选项从Error改为Warning,点击Apply,点击OK。

          2、出现的异常  ......thread-10org.archive.util.ArchiveUtils.<linit>( )TLD list....

               解决办法: 将\heritrix-1.14.4-src\heritrix-1.14.4\src\resources\org\archive\util 下的文本文档拷贝到heritrix中的src\org\archive\util下;

        最终运行Heritrix.java的正确结果如下:

       Heritrix安装和配置_第1张图片

      二 、 登录并创建一个简单的JOB

     1、 打开浏览器,输入 http://localhost:8080 ,进入heritrix的登录页面

        Heritrix安装和配置_第2张图片

       2、点击Login按钮后进入heritrix的控制台界面

                Heritrix安装和配置_第3张图片

        ①左边红色方框里介绍的是当前heritrix的一些信息。

        ②右边蓝色框内显示了当前Java虚拟机的一些状态,如上图所示,可以看到当前的堆大小为4184KB,而已经被使用了3806KB,另外,最大的堆内容可以达到65088KB,也就是在64M左右。在正式抓取的时候,64M的最大内存是不够用的,一般至少设置为512M。设置过程如下:右键点击Heritrix->Run As->Run Configurations,进入该页面,选择Arguments项,在VM arguments:框下输入:-Xmx512m,点击Apply。

           Heritrix安装和配置_第4张图片

        重新启动heritrix,登录后可以看到最大内存已经改到了520256 KB,即512M。

                              Heritrix安装和配置_第5张图片

         3、创建一个Job

       (1)点击控制台页面的Jobs按钮,进入如下界面

            Heritrix安装和配置_第6张图片

       在创建页面有四种创建方式,含义如下:

        ①Based on existing job:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。

        ②Based on a recovery:在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。

        ③Based on a profile:专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。

        ③With defaults:这个最简单,表示按默认的配置来生成一个任务。

     (2)、点击选择最简单的With Defaults方式,创建一个新的任务

       在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认的名称为order.xml。每次创建一个新任务时,都相当于生成了一个order.xml的文件。文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包括该用户所选择的Processor类、Frontier类、Fetcher类、抓取时线程的最大数量、连接超时的最大等待时间等信息。上面所说的4种创建抓取任务的方式,其实都是在生成一个order.xml文件。其中,第4种With defaults,则是直接拷贝默认的order.xml文件。在所创建的Eclipse工程或是命令行启动的Heritrix下载包中,该默认的order.xml文件均是放于profiles\default目录下的。

       关于order.xml的细节,在此还不必深究。接下的学习中会做介绍。

        Heritrix安装和配置_第7张图片

        在新建任务的名称上,填入“sina_blog”,表示该抓取任务将抓取新浪博客的信息。在Description中随意填入字符,然后再在seeds框中,填入新浪博客首页地址。

        这里需要解释一下seeds的含义。所谓seeds,其实指的是抓取任务的起始点。每次的抓取,总是需要从一个起始点开始,在得到这个起始点网页上的信息后,分析出新的地址加入抓取队列中,然后循环抓取,重复这样的过程,直到所有链接都分析完毕。在新建任务的过程是可以填多个Seeds作为起点的,以上只作为一个示例,所以只填了新浪博客的首页地址

      (3)、设置抓取时的处理链

         在上图的下边有一排按钮:Modules   Submodulers   Settings   Overrides   Submit job,点击Modules按钮,进入处理链设置页面。

         Heritrix安装和配置_第8张图片

          此时页面并没有做配置的Add/Change按钮及相应的下拉菜单,我们需要在myeclipse中将modules的上一级目录放到项目的classpath中,过程如下:

          右键Heritrix->Run As->Run configuratins.....->classpath->user Entries->Advanced->Add External Folder,找到modules的上一级目录conf加入即可。

          重新启动Heritrix项目,登录并和之前一样创建job,到Modules页面可以看到,页面如下:

          Heritrix安装和配置_第9张图片

          此时,页面中出现了Add/Change的配置按钮。

         从上而下,可以看到,需要配置的内容共有7项,其中CrawlScope和Frontier是两个最重要的组件。

        ①CrawlScope用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。我们选择BroadScope。

         Heritrix安装和配置_第10张图片

        ②Frontier则是一个URL的处理器,它将决定下一个被处理的URL是什么。同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。我们使用BdbFrontier类来做为处理器(其实Heritrix也只有这一个可用的Frontier),全权掌管URL的分配。

         Heritrix安装和配置_第11张图片  

       除了以上两个组件外,还有5个队列要配。这五个队列根据先后的顺序,就依次组成了Heritrix的整个处理器链。5个队列的含义分别如下:

      Ⅰ、PreProcessor:这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。比如判断robot.txt的信息等,它是整个处理器链的入口。

        Heritrix安装和配置_第12张图片

       Ⅱ、Fetcher:从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。这里我们主要使用FetchDNS和FetchHTTP两个类。

         Heritrix安装和配置_第13张图片

       Ⅲ、Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。在这个队列中,包括了一系列的工具,如解析HTML、CSS等。在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。在演示中,使用两种Extractor,即ExtractorHTTP和ExtractorHTML。

        Heritrix安装和配置_第14张图片  

       Ⅳ、Writer:主要是用于将所抓取到的信息写入磁盘。通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。当然处理起来,镜象方式要更为容易一些,因此,我们命名用镜象Mirror方式。

       

      Ⅴ 、PostProcessor:在整个抓取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。   

        Heritrix安装和配置_第15张图片      

      值得一提的是,在处理器链的设置过程中,每一个队列中的处理器都是要分先后顺序的,信息的处理流程实际上是不可逆的,因此,在设置时,可以看见在队列的右侧总是有“Up”、“Down”和“Remove”这样的操作,以帮助能够正确的设置其顺序。

      在设置完Hertrix所需的处理链后,仍然还不能够马上开始抓取任务,还需对默认的运行时参数做一些修改,以适应真正的需要。

    (4)、设置运行时的参数

       在设置完处理链后,在页面顶部或底部都可以找到如下图所示的菜单项,单击“Settings”链接,就进入了属性设置的页面。

        

      如下图在属性设置页面上有非常多的输入域,Heritrix在抓取网页时,这些域是用来对的各个组件的值进行预设。

         Heritrix安装和配置_第16张图片

      由于页面上的内容非常多,使用者可能无法全部了解它们的作用。所以Heritrix提供了一个辅助功能,来在最大程度上让使用者了解每个参数的含义。

         Heritrix安装和配置_第17张图片

      可以看到,在每个属性的右侧都有一个小问号,当单击问号时,就会弹出一个Javascript的Alert提示框,上面介绍了当前属性的作用。例如,在上图中单击“max-toe-threads”属性,通过Alert的提示可以知道,它表示的是同时处理URIS的线程的最大数目。默认是100,我们设置为50。

     当在第一次使用Heritrix时,所需要设置的参数并不多,以默认设置为主。以下就来介绍一些必须要在第一次使用时就要配置好的参数。

      ①max-toes-threads

      该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。该参数的默认值为100,而事实上根据笔者的经验,在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。

      ② HTTP-Header

       在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。默认情况下,这两个属性的值如下图

        

      很明显,这样的值是无法完成真实的HTTP协议的模拟的,所以,必须要将值改掉。可以参照下图:

          

      其实只需要最后的URL和联系邮箱格式正确就可以了,可以随便设置。

    (5)、完成Job的创建

      在完成上述的设置之后,任务就创建成成功了,点击下图"Submit job"按钮提交任务。

       

       提交任务后,会跳转到如下页面,表示任务创建成功。

       Heritrix安装和配置_第18张图片

       从图中看到,有一个Pending Jobs,也就是我们之前创建的任务sina_blog。接下来,我们就去启动我们的任务,开始抓取网页。

        

      三、启动Job,抓取网页

       1、点击“Console”按钮回到Console界面,可以看到刚刚创建的任务已经启动了,等待我们开始它

        Heritrix安装和配置_第19张图片

      点击"Start"按钮,“Pending”状态的抓取任务激活,开始抓取网页。

      2、分析抓取页面的一些信息。

      当我们点击"Start"开始抓取网页后,控制台界面如下:

        Heritrix安装和配置_第20张图片

      界面中Rates框中显示的是抓取的速度。Mermory框中反应的是java虚拟机的内存状态。Load框中显示的是抓取的线程数以及队列的负载以及一些其他信息。Totals框中则是已经处理的链接数和总共分析出的链接数的比值,但这个值往往不是准确的,因为当页面在不断被抓取分析时,链接的数量也会不断的增加,因此,这个百分比的数字也在不断的变化。如图所示:此时总共抓取到的链接数已经达到了78560个,处理了2712个,它的百分比数量为3%。

      到这里,已经把Heritrix成功的运行起来,并且抓取了一定的内容。接下来,看一下heritrix是如何存储抓取下来的内容的。

   

     四、Heritrix的镜像存储结构

     由于在前面设置了Writer的类型为MirrorWriter。因此,磁盘上应该留有了所抓取到的网页的各种镜象。那么,究竟Heritrix是如何存储下镜象信息的呢? 打开Eclipse的workspace目录,进入heritrixProject的工程,里面有一个jobs目录。进入后,找到以刚才job的名称打头的文件夹,这里面的内容,就是Heritrix在运行时实时生成的。其中,有一个mirror目录,进入后,如下图所示:

     Heritrix安装和配置_第21张图片

     其实所谓镜象方式存储,就是将URL地址按“/”进行切分,进而按切分出来的层次存储,比如一个URL地址为: http://blog.sina.com.cn/index.html

那么它在mirror目录中的保存位置就该是blog.sina.com.cn目录下的index.html文件。

          

     五、停止抓取任务

      当用户进行某个抓取任务时,有两种方法会让任务停止下来。

     1.正常终止

     第一种方法当然就是任务的自然结束,其条件为所有队列中的URI都已经被处理过了。此时,任务将自然终止。在“Jobs”面版上会看到任务已经完成,被加入到“Completed jobs”列表中。

     2.强行终止

     当然,任务不可能总是运行完,这可能是因为对任务的控制不够,结果抓取了太多不相关的信息,进而造成URL队列无限制膨胀,无法终止。在这种情况下,就需要强行将任务终止。在Console面版上有如下图所示的一排链接,最后一个“Terminate”链接,就是用来终止当前运行的任务。

                                              

      单击“Terminate”链接后,当前在运行的抓取任务就会立即终止,并同样将任务放置到“Jobs”面版上的“Completed jobs”列表中,只不过在“status”上,它会显示“Finished - Ended by operator”这样的提示。

      当然,如果用户希望关闭Heritrix,并终止所有正在运行的任务,也可以单击Console面版上的“Shutdown Heritrix software”的链接,此时,Heritrix会弹出一个警告,告诉你如果关闭Heritrix,则当前一切正在运行的任务都将被终止。如下图所示。

                                                        

      如果选择“I’m sure, shut it down”,则Heritrix的WebUI将会终止,虚拟机进程结束。


你可能感兴趣的:(Heritrix安装和配置)