如何从heritrix抓取中排除除text/html之外的所有内容?

dgA*_*ien 4 indexing search-engine web-crawler cxml heritrix

On:Heritrix Usecases有一个"仅存储成功的HTML页面"的用例

我的问题:我不知道如何在我的cxml文件中实现它.特别是:将ContentTypeRegExpFilter添加到ARCWriterProcessor =>将其正则表达式设置为text/html.*....示例cxml Files中没有ContentTypeRegExpFilter.

Jam*_*mes 6

Kris的答案只是事实的一半(至少我使用的是Heritrix 3.1.x).DecideRule返回ACCEPT,REJECT或NONE.如果规则返回NONE,则表示此规则对此没有"意见"(如Spring Security中的ACCESS_ABSTAIN).现在,ContentTypeMatchesRegexDecideRule(与所有其他MatchesRegexDecideRule一样)可以配置为在正则表达式匹配时返回决策(由两个属性"decision"和"regex"配置).该设置意味着如果正则表达式匹配,则此规则返回ACCEPT决定,但如果匹配则返回NONE .正如我们所看到的 - NONE不是一个意见,所以shouldProcessRule将评估为ACCEPT,因为没有做出任何决定.

因此,要仅使用text/html*Content-Type存档响应,请配置DecideRuleSequence,其中默认情况下所有内容都已被拒绝,并且只有选定的条目将被接受.

这看起来像这样:

 <bean id="warcWriter" class="org.archive.modules.writer.WARCWriterProcessor">
   <property name="shouldProcessRule">
     <bean class="org.archive.modules.deciderules.DecideRuleSequence">
       <property name="rules">
         <list>
           <!-- Begin by REJECTing all... -->
           <bean class="org.archive.modules.deciderules.RejectDecideRule" />
           <bean class="org.archive.modules.deciderules.ContentTypeMatchesRegexDecideRule">
             <property name="decision" value="ACCEPT" />
             <property name="regex" value="^text/html.*" />
           </bean>
         </list>
       </property>
     </bean>
   </property>
   <!-- other properties... -->
 </bean>
Run Code Online (Sandbox Code Playgroud)

为了避免下载图像,电影等,请使用MatchesListRegexDecideRule配置"scope"bean,该URL使用众所周知的文件扩展名来拒绝URL:

<!-- ...and REJECT those from a configurable (initially empty) set of URI regexes... -->
<bean class="org.archive.modules.deciderules.MatchesListRegexDecideRule">
      <property name="decision" value="REJECT"/>
      <property name="listLogicalOr" value="true" />
      <property name="regexList">
       <list>
         <value>.*(?i)(\.(avi|wmv|mpe?g|mp3))$</value>
         <value>.*(?i)(\.(rar|zip|tar|gz))$</value>
         <value>.*(?i)(\.(pdf|doc|xls|odt))$</value>
         <value>.*(?i)(\.(xml))$</value>
         <value>.*(?i)(\.(txt|conf|pdf))$</value>
         <value>.*(?i)(\.(swf))$</value>
         <value>.*(?i)(\.(js|css))$</value>
         <value>.*(?i)(\.(bmp|gif|jpe?g|png|svg|tiff?))$</value>
       </list>
      </property>
</bean>
Run Code Online (Sandbox Code Playgroud)