ヘリトリックスクロールからテキスト/HTML以外のすべてを除外するにはどうすればよいですか?
-
28-09-2019 - |
質問
の上: Heritrix UseCases 「成功したHTMLページのみを保存する」ためのユースケースがあります
私の問題:CXMLファイルに実装する方法がわかりません。特に:contentTyPereGexpFilterをArcWriterProcessor =>に追加するRegexp設定をテキスト/HTMLに設定します。*。 ...サンプルCXMLファイルにContentTyPereGexpFilterはありません。
解決
引用するユースケースはやや時代遅れであり、Heritrix 1.xを参照しています(フィルターは決定ルール、非常に異なる構成フレームワークに置き換えられています)。それでも基本的な概念は同じです。
CXMLファイルは基本的にスプリング構成ファイルです。プロパティを構成する必要があります shouldProcessRule
Arcwriter Beanになります ContentTypeMatchesRegexDecideRule
可能なアークライターの構成:
<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>
これにより、プロセッサは決定者に一致するアイテムのみを処理します。これにより、コンテンツタイプ(MIMEタイプ)が提供された正規表現と一致するもののみが合格します。
「決定」の設定に注意してください。あなたは私たちの外で物事を支配していますか? (私の例は物事を支配します、一致しないものはすべて除外されます)。
として shouldProcessRule
プロセッサから継承され、これは任意のプロセッサに適用できます。
Heritrix 3の構成に関する詳細については、 Heritrix 3 wiki (Crawler.Archive.orgのユーザーガイドはHeritrixについてです1)
他のヒント
クリスの答えは真実の半分に過ぎません(少なくとも私が使用しているHeritrix 3.1.xでは)。決定は、受け入れ、拒否、または拒否されません。ルールが何も返されない場合、このルールにはそれについて「意見がない」ことを意味します(Spring SecurityのAccess_Abstainなど)。今 contentTypematchesRegexDeciderule (他のすべてと同様 MatchesRegexDeciderule)Regexが一致する場合(2つのプロパティ「決定」と「Regex」)一致する場合、決定を返すように構成できます。設定は、このルールが正規表現が一致した場合、受け入れの決定を返すことを意味しますが、それがそうする場合は何も返しません いいえ マッチ。そして、私たちが見たように、意見はありませんので、決定が下されていないため、プロセスルールが受け入れると評価します。
したがって、Text/HTML* Content-Typeを使用した応答のみをアーカイブするには、デフォルトですべてが拒否され、選択されたエントリのみが受け入れられる場合の決定を設定します。
これは次のようになります:
<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>