史迪奇史迪仔:Heritrix源码分析(二) 配置文件order.xml介绍

来源:百度文库 编辑:学校大全网 时间:2022/05/23 03:14:31

Heritrix源码分析(二) 配置文件order.xml介绍

文章分类:互联网

     本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.javaeye.com/blog/613412

 

      欢迎加入Heritrix群(QQ):10447185 

  

      order.xml是整个Heritrix的核心,里面的每个一个配置都关系到Heritrix的运行情况,没读源码之前我只能从有限的渠道去获知这些配置的运用.读完之后才知道Heritrix竟然有如此灵活的运用,如可以控制抓取速度,可以优化电脑性能,可以在某一次的抓取上继续抓取.当然整个order.xml里我也没有全部掌握,只知道大部分配置的作用,希望大家指点改正以及补充,谢谢!

 

  1.       代表着该抓取JOB的元素,相当于Html的meta
Xml代码
  1.   
  2.    myheritrix                      
  3.    my heritrix    
  4.    Admin                   
  5.                     
  6.                                
  7.    20090520051654               
Xml代码
  1.   

 

2. 跟抓取有关的所有参数,由于内容较多,并且Heritrix也已将他们分成不同模块,所以这里我也将他们拆分来说明.

 

 

Xml代码
  1.    
  2.      name="settings-directory">settings   
  3.      name="disk-path">  
  4.      name="logs-path">logs  
  5.      name="checkpoints-path">checkpoints  
  6.      name="state-path">state   
  7.      name="scratch-path">scratch    
  8.      name="max-bytes-download">0     
  9.      name="max-document-download">0    
  10.      name="max-time-sec">0   
  11.      name="max-toe-threads">30    
  12.      name="recorder-out-buffer-bytes">4096   
  13.      name="recorder-in-buffer-bytes">65536   
  14.      name="bdb-cache-percent">0   
  15.  name="scope" class="org.archive.crawler.deciderules.DecidingScope">   
  16.   
  17.  name="http-headers">   
  18.   
  19.   name="robots-honoring-policy" class="org.archive.crawler.datamodel.RobotsHonoringPolicy">   
  20.   
  21.   name="frontier" class="org.archive.crawler.frontier.BdbFrontier">   
  22.   
  23.  name="pre-fetch-processors">   
  24.   
  25.  name="fetch-processors">    
  26.   
  27.  name="extract-processors">   
  28.   
  29.  name="write-processors">   
  30.   
  31.  name="post-processors">   
  32.   
  33.  name="loggers">   
  34.   
  35.  name="credential-store" class="org.archive.crawler.datamodel.CredentialStore">   
  36.    
  37.    

3.接下来拆分每个组件的配置文件一一进行说明,最后对Heritrix主要的配置也就是我们可以影响抓取的配置进行说明。

   3.1:抓取范围

  

Xml代码
  1.  name="scope" class="org.archive.crawler.deciderules.DecidingScope">  
  2.        name="enabled">false   
  3.        name="seedsfile">seeds.txt   
  4.        name="reread-seeds-on-config">true   
  5.        name="decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence">   
  6.          name="rules">  
  7.            name="rejectByDefault" class="org.archive.crawler.deciderules.RejectDecideRule">   
  8.             
  9.            name="acceptIfSurtPrefixed" class="org.archive.crawler.deciderules.SurtPrefixedDecideRule">  
  10.              name="decision">ACCEPT   
  11.              name="surts-source-file">   
  12.              name="seeds-as-surt-prefixes">true   
  13.              name="surts-dump-file">   
  14.              name="also-check-via">false  
  15.              name="rebuild-on-reconfig">true  
  16.             
  17.            name="rejectIfTooManyHops" class="org.archive.crawler.deciderules.TooManyHopsDecideRule">  
  18.              name="max-hops">20  
  19.             
  20.            name="acceptIfTranscluded" class="org.archive.crawler.deciderules.TransclusionDecideRule">  
  21.              name="max-trans-hops">3  
  22.              name="max-speculative-hops">1  
  23.             
  24.            name="rejectIfPathological" class="org.archive.crawler.deciderules.PathologicalPathDecideRule">  
  25.              name="max-repetitions">2  
  26.             
  27.            name="rejectIfTooManyPathSegs" class="org.archive.crawler.deciderules.TooManyPathSegmentsDecideRule">  
  28.              name="max-path-depth">20  
  29.             
  30.            name="acceptIfPrerequisite" class="org.archive.crawler.deciderules.PrerequisiteAcceptDecideRule">  
  31.             
  32.           
  33.         
  34.       

 

    3.2: HTTP协议

   

Xml代码
  1.  name="http-headers">  
  2.        name="user-agent">Mozilla/5.0 (compatible; heritrix/1.14.3 +http://127.0.0.1)  
  3.        name="from">guoyunsky@hotmail.com  
  4.       

 

    3.3:爬虫协议

    

Xml代码
  1.  name="robots-honoring-policy" class="org.archive.crawler.datamodel.RobotsHonoringPolicy">  
  2.        name="type">classic           
  3.        name="masquerade">false     
  4.        name="custom-robots">    
  5.        name="user-agents">   
  6.         
  7.       

 

   3.4:Frontier 调度器

  

Xml代码
  1.  name="frontier" class="org.archive.crawler.frontier.BdbFrontier">  
  2.        name="delay-factor">4.0  
  3.        name="max-delay-ms">20000  
  4.        name="min-delay-ms">2000  
  5.        name="respect-crawl-delay-up-to-secs">300  
  6.        name="max-retries">30  
  7.        name="retry-delay-seconds">900  
  8.        name="preference-embed-hops">1  
  9.        name="total-bandwidth-usage-KB-sec">0  
  10.        name="max-per-host-bandwidth-usage-KB-sec">0  
  11.        name="queue-assignment-policy">org.archive.crawler.frontier.HostnameQueueAssignmentPolicy  
  12.        name="force-queue-assignment">  
  13.        name="pause-at-start">false  
  14.        name="pause-at-finish">false  
  15.        name="source-tag-seeds">false  
  16.        name="recovery-log-enabled">true  
  17.        name="hold-queues">true  
  18.        name="balance-replenish-amount">3000  
  19.        name="error-penalty-amount">100  
  20.        name="queue-total-budget">-1  
  21.        name="cost-policy">org.archive.crawler.frontier.ZeroCostAssignmentPolicy  
  22.        name="snooze-deactivate-ms">300000  
  23.        name="target-ready-backlog">50  
  24.        name="uri-included-structure">org.archive.crawler.util.BdbUriUniqFilter  
  25.        name="dump-pending-at-close">false  
  26.       

 

   3.5:URL规范化规则,主要用来规范化每个URL,用Heritrix默认的就好了,这里不做说明了,其实也是通过各种规则

   3.6:预先处理链组件:

Xml代码
  1.  name="pre-fetch-processors">   
  2.        name="Preselector" class="org.archive.crawler.prefetch.Preselector">  
  3.          name="enabled">true  
  4.          name="Preselector#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence">  
  5.            name="rules">  
  6.             
  7.           
  8.          name="override-logger">false  
  9.          name="recheck-scope">true  
  10.          name="block-all">false  
  11.          name="block-by-regexp">  
  12.          name="allow-by-regexp">  
  13.         
  14.        name="Preprocessor" class="org.archive.crawler.prefetch.PreconditionEnforcer">  
  15.          name="enabled">true  
  16.          name="Preprocessor#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence">  
  17.            name="rules">  
  18.             
  19.           
  20.          name="ip-validity-duration-seconds">86400  
  21.          name="robot-validity-duration-seconds">86400  
  22.          name="calculate-robots-only">false  
  23.         
  24.       

 

   3.7:获取组件:

 

   3.8:抽取组件

  truetruetruetruetruetruetruetrue

 

   3.9:写组件

 truetrue   index.html %2E .  true mirror 1023 255 false true LONG  

 

   3.10:请求链组件里面可以配置自己的调度器

 truetruefalsetrue-1true

 

   3.11:统计跟踪链组件

 20