سؤال

على: Heritrix usecases هناك حالة استخدام لـ "تخزين صفحات HTML الناجحة فقط"

مشكلتي: لا أعرف كيفية تنفيذها في ملف CXML الخاص بي. بشكل خاص: إضافة contentTyperegexpfilter إلى ArcWriterProcessor => قم بتعيين إعداد regexp الخاص به على النص/html.*. ... لا يوجد contentTyperegexpfilter في ملفات CXML.

هل كانت مفيدة؟

المحلول

تكون حالات الاستخدام التي تستشهد بها إلى حد ما في التاريخ وتشير إلى 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>

سيؤدي ذلك إلى معالجة المعالج فقط تلك العناصر التي تتطابق مع القرار ، والتي بدورها تمرر فقط أولئك الذين يطابق نوع المحتوى (نوع MIME) مع التعبير العادي المقدم.

كن حذرًا بشأن إعداد "القرار". هل تحكم أشياء في الخارج؟ (مثالي يحكم الأشياء ، أي شيء لا يتطابق يستبعد).

كما shouldProcessRule ورثت من المعالج ، ويمكن تطبيق هذا على أي معالج.

يمكن العثور على مزيد من المعلومات حول تكوين Heritrix 3 على Heritrix 3 ويكي (دليل المستخدم على crawler.archive.org يدور حول Heritrix 1)

نصائح أخرى

إجابة كريس ليست سوى نصف الحقيقة (على الأقل مع Heritrix 3.1.x التي أستخدمها). إرجاع قرار قبول ، يرفض أو لا شيء. إذا لم تُرجع القاعدة أي شيء ، فهذا يعني أن هذه القاعدة "لا يوجد رأي" حول ذلك (مثل Access_Abstain في أمن الربيع). حاليا contentTyPematchesRegexDeciderule (كلها أخرى MatchesRegexDeciderule) يمكن تكوينها لإرجاع قرار في حالة تطابق regex (تم تكوينه بواسطة الممتلكين "القرارين" و "regex"). يعني الإعداد أن هذه القاعدة تُرجع قرارًا قبولًا إذا كان regex يتطابق ، ولكن لا يعيد أي شيء إذا حدث ذلك ليس مباراة. وكما رأينا - لا شيء ليس رأيًا بحيث يجب أن يتم تقييم المعالجة التي يجب أن تقبلها لأنه لم يتم اتخاذ قرارات.

لذلك ، من أجل أرشفة الاستجابات فقط باستخدام 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top