On:Heritrixのユースケース「成功したHTMLページのみを保存する」のユースケースがあります
私の問題:cxmlファイルに実装する方法がわかりません。特に:ContentTypeRegExpFilterをARCWriterProcessorに追加する=>その正規表現設定をtext/html。*に設定します。...サンプルcxmlファイルにはContentTypeRegExpFilterはありません。
On:Heritrixのユースケース「成功したHTMLページのみを保存する」のユースケースがあります
私の問題:cxmlファイルに実装する方法がわかりません。特に:ContentTypeRegExpFilterをARCWriterProcessorに追加する=>その正規表現設定をtext/html。*に設定します。...サンプルcxmlファイルにはContentTypeRegExpFilterはありません。
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>
あなたが引用するユースケースはやや時代遅れであり、Heritrix 1.xを参照しています(フィルターは決定ルールに置き換えられ、構成フレームワークは大きく異なります)。それでも基本的な考え方は同じです。
cxmlファイルは基本的にSpring構成ファイルです。shouldProcessRule
ARCWriterBeanのプロパティを次のように構成する必要があります。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に関するものです)