Как я могу исключить все, кроме текста / HTML из сканирования Heritrix? - PullRequest
4 голосов
/ 16 августа 2010

Вкл .: Случаи использования Heritrix есть вариант использования для «Хранить только успешные страницы HTML»

Моя проблема: я не знаю, как реализовать это в моем файле cxml.В частности: добавление ContentTypeRegExpFilter к ARCWriterProcessor => установите для его параметра регулярного выражения значение text / html. *.... В примере файлов cxml нет ContentTypeRegExpFilter.

Ответы [ 2 ]

6 голосов
/ 02 октября 2013

Ответ Криса - только половина правды (по крайней мере с Heritrix 3.1.x, который я использую).A DecideRule возвращает ПРИНЯТЬ, ОТКАЗАТЬ или ОТСУТСТВУЕТ.Если правило возвращает NONE, это означает, что это правило «не имеет мнения» по этому поводу (как ACCESS_ABSTAIN в Spring Security).Теперь ContentTypeMatchesRegexDecideRule (как и все другие MatchesRegexDecideRule ) можно настроить на возврат решения, если совпадение с регулярным выражением (настроено двумя свойствами «решение» и «регулярное выражение»).Параметр означает, что это правило возвращает решение ПРИНЯТЬ, если регулярное выражение соответствует, но возвращает NONE, если оно соответствует , а не .И, как мы уже видели, NONE - это не мнение, так что shouldProcessRule будет оцениваться как ACCEPT, потому что не было принято никаких решений.

Таким образом, чтобы архивировать ответы только с текстом / 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>

Чтобы вообще не загружать изображения, фильмы и т. д., настройте «область действия»bean-компонент с 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>
1 голос
/ 16 августа 2010

Варианты использования, которые вы цитируете, несколько устарели и относятся к Heritrix 1.x (фильтры были заменены правилами выбора, совсем другой структурой конфигурации).Тем не менее, основная концепция та же самая.

Файл cxml - это в основном файл конфигурации Spring.Вам необходимо настроить свойство 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 наследуется от Processor, это может быть применено к любому процессору.

Дополнительная информация о настройке Heritrix 3можно найти в Heritrix 3 Wiki (руководство пользователя на crawler.archive.org посвящено Heritrix 1)

...