4

On:Heritrixのユースケース「成功したHTMLページのみを保存する」のユースケースがあります

私の問題:cxmlファイルに実装する方法がわかりません。特に:ContentTypeRegExpFilterをARCWriterProcessorに追加する=>その正規表現設定をtext/html。*に設定します。...サンプルcxmlファイルにはContentTypeRegExpFilterはありません。

4

2 に答える 2

7

Krisの答えは真実の半分にすぎません(少なくとも私が使用しているHeritrix 3.1.xでは)。DecideRuleは、ACCEPT、REJECT、またはNONEを返します。ルールがNONEを返す場合、それはこのルールがそれについて「意見がない」ことを意味します(Spring SecurityのACCESS_ABSTAINのように)。これで、 ContentTypeMatchesRegexDecideRule(他のすべてのMatchesRegexDecideRuleと同様)は、正規表現が一致した場合に決定を返すように構成できます(2つのプロパティ"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>

画像や映画などがダウンロードされないようにするには、次のようなよく知られたファイル拡張子を持つURLを拒否するMatchesListRegexDecideRuleを使用して「スコープ」Beanを構成します。

<!-- ...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>
于 2013-10-02T12:05:09.167 に答える
1

あなたが引用するユースケースはやや時代遅れであり、Heritrix 1.xを参照しています(フィルターは決定ルールに置き換えられ、構成フレームワークは大きく異なります)。それでも基本的な考え方は同じです。

cxmlファイルは基本的にSpring構成ファイルです。shouldProcessRuleARCWriterBeanのプロパティを次のように構成する必要があります。ContentTypeMatchesRegexDecideRule

可能なARCWriter構成:

  <bean id="warcWriter" class="org.archive.modules.writer.ARCWriterProcessor">
    <property name="shouldProcessRule">
      <bean class="org.archive.modules.deciderules.ContentTypeMatchesRegexDecideRule">
        <property name="decision" value="ACCEPT" />
        <property name="regex" value="^text/html.*">
      </bean>
    </property>
    <!-- Other properties that need to be set ... -->
  </bean>

これにより、プロセッサはDecideRuleに一致するアイテムのみを処理し、DecideRuleは、コンテンツタイプ(mimeタイプ)が指定された正規表現に一致するアイテムのみを渡します。

「決定」設定に注意してください。あなたは私たちの外で物事を支配していますか?(私の例では物事を除外し、一致しないものはすべて除外します)。

プロセッサーから継承されるため、これshouldProcessRuleはどのプロセッサーにも適用できます。

Heritrix 3の構成の詳細については、Heritrix 3 Wikiを参照してください(crawler.archive.orgのユーザーガイドはHeritrix 1に関するものです)

于 2010-08-16T16:47:28.000 に答える