Как исключить все, кроме текста/HTML из ползания Heritrix?
-
28-09-2019 - |
Вопрос
На: Дейтрикс упреждает Существует использование для «только хранения успешных HTML-страниц»
Моя проблема: я не знаю, как это реализовать в моем файле CXML. В частности: добавление ContentTypereGexPfilter в ArcWriterProcessor => установите настройку Regexp на Text/html.*. ... В примере файлов CXML нет ContentTypereGexPfilter.
Решение
Используемые случаи, которые вы цитируете, несколько устарели и обратитесь к Heritrix 1.x (фильтры были заменены в решательских правилах, очень другую структуру конфигурации). Тем не менее основная концепция одинакова.
Файл CXML в основном является файлом конфигурации пружины. Вам нужно настроить свойство shouldProcessRule
на бобах Arcwriter, чтобы быть 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, что, в свою очередь, проходит только те, чей тип контента (тип MIME) соответствует предоставленному регулярному выражению.
Будьте осторожны с настройкой «решения». Вы правят вещи в нашем выходе? (Мой пример управляет вещами, все, что не соответствует, исключено).
В виде shouldProcessRule
Унаследован от процессора, это может быть применено к любому процессору.
Более подробную информацию о настройке Heritrix 3 можно найти на Heritrix 3 Wiki (Руководство пользователя на Crawler.archive.org рассказывает о Heritrix 1)
Другие советы
Ответ Криса - только половина правды (по крайней мере, с помощью Heritrix 3.1.x, которую я использую). Возврат децидула принять, отклонить или нет. Если правило не возвращается, это означает, что это правило имеет «нет мнения» о том (например, Access_abstain в Spring Security). Теперь ContentTypematchEsRegexDeciderule (как все остальные Matchesregexdeciderule.) Может быть настроен для возврата решения, если установки Regeex (настроенные двумя свойствами «решение» и «Regex»). Установка означает, что это правило возвращает решение принять, если установки Regeex, но возвращает ни одного, если это делает нет совпадение. И, как мы видели - никто не является мнением, чтобы следователь был оценивать, чтобы принять, потому что никаких решений не было принято.
Таким образом, чтобы архивировать ответы с помощью типа контента Text/HTML*, настройте 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>
Чтобы избежать этих изображений, фильмов и т. Д. Вообще загружаются, настраивайте боб «Scope» с помощью MatcheslistregexDeciderule, который отклоняет 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>