Heritrix源碼分析(二) 配置文件order.xml介紹(轉)

  本博客屬原創文章,歡迎轉載!轉載請務必註明出處:http://guoyunsky.iteye.com/blog/613412javascript

     本博客已遷移到本人獨立博客: http://www.yun5u.com/html

     歡迎加入Heritrix羣(QQ):109148319,10447185 , Lucene/Solr羣(QQ) :  118972724   java

 

 

      order.xml是整個Heritrix的核心,裏面的每一個一個配置都關係到Heritrix的運行狀況,沒讀源碼以前我只能從有限的渠道去獲知這些配置的運用.讀完以後才知道Heritrix居然有如此靈活的運用,如能夠控制抓取速度,能夠優化電腦性能,能夠在某一次的抓取上繼續抓取.固然整個order.xml裏我也沒有所有掌握,只知道大部分配置的做用,但願你們指點改正以及補充,謝謝!正則表達式

 

  1.     <meta></meta>  表明着該抓取JOB的元素,至關於Html的meta
Xml代碼   收藏代碼
  1. <meta>  
  2.    <name>myheritrix</name>                    <!-- Heritrix抓取JOB的名字,由用戶輸入,用來區分不一樣的抓取JOB,Heritrix沒有默認值 -->  
  3.    <description>my heritrix</description>  <!-- Heritrix抓取JOB的描述,由用戶輸入,用來描述該抓取JOB,Heritrix沒有默認值-->  
  4.    <operator>Admin</operator>                 <!--Heritrix抓取JOB的操做者,由用戶輸入,Heritrix沒有默認值  -->  
  5.    <organization></organization>               <!--Heritrix抓取JOB的操做者所屬組織,由用戶輸入,Heritrix沒有默認值,能夠爲空 -->  
  6.    <audience></audience>                          <!--Heritrix抓取JOB的用戶或客戶,由用戶輸入,Heritrix沒有默認值,能夠爲空 -->  
  7.    <date>20090520051654</date>             <!--提交該Heritrix抓取JOB的時間,由系統生成 -->  
Xml代碼   收藏代碼
  1. </meta>  

 

2.<controller></controller> 跟抓取有關的全部參數,因爲內容較多,而且Heritrix也已將他們分紅不一樣模塊,因此這裏我也將他們拆分來講明.算法

 

 

Xml代碼   收藏代碼
  1.  <controller>  
  2.     <string name="settings-directory">settings</string> <!-- Heritrix的頂級目錄 -->  
  3.     <string name="disk-path"></string><!-- order.xml所在目錄,單個Heritrix實例的目錄 -->  
  4.     <string name="logs-path">logs</string><!-- 用於保存Heritrix的日誌文件,能夠是絕對路徑,也能夠是相對路徑,相對路徑是相對於disk-path-->  
  5.     <string name="checkpoints-path">checkpoints</string><!-- 用於保存checkpoints(定點備份)文件的目錄, 能夠是絕對路徑,也能夠是相對路徑,相對路徑是相對於disk-path-->  
  6.     <string name="state-path">state</string> <!-- 用於保存crawler-state文件的目錄,,能夠是絕對路徑,也能夠是相對路徑,相對路徑是相對於disk-path -->  
  7.     <string name="scratch-path">scratch</string>  <!-- 用於保存網頁內容臨時文件的目錄,,能夠是絕對路徑,也能夠是相對路徑,相對路徑是相對於disk-path-->  
  8.     <long name="max-bytes-download">0</long>   <!-- 最大下載字節數,當下載字節超出該值爬蟲將中止下載。若是該值爲0則表示沒有限制-->  
  9.     <long name="max-document-download">0</long>  <!-- 最大文檔下載數,當下載文檔超出該值時爬蟲將中止下載。若是該值爲0則表示沒有限制-->  
  10.     <long name="max-time-sec">0</long> <!-- 最大時間抓取(秒),若是抓取時間超過該值,則爬蟲將中止抓取。若是該值爲0則表示沒有限制-->  
  11.     <integer name="max-toe-threads">30</integer>  <!-- 最大線程數用於同時處理多個URI-->  
  12.     <integer name="recorder-out-buffer-bytes">4096</integer> <!-- 每個線程的輸出緩衝區大小,也就是在內存裏存放多大的字節數才寫入到文件中-->  
  13.     <integer name="recorder-in-buffer-bytes">65536</integer> <!-- 每個線程的輸入緩衝區大小,也就是在內存裏存放多大的字節數才寫入到文件中-->  
  14.     <integer name="bdb-cache-percent">0</integer> <!--分配給DBB緩存堆的百分比,默認爲0則表示沒有其餘要求(一般BDB是須要60%或者是最大值) -->  
  15. <newObject name="scope" class="org.archive.crawler.deciderules.DecidingScope"> <!-- 抓取範圍,構造CrawlScope,等下拆分來講明-->  
  16. </newObject>  
  17. <map name="http-headers"> <!-- HTTP協議,當處理爬蟲HTPTP協議時須要構造,等下拆分說明-->  
  18. </map>  
  19.  <newObject name="robots-honoring-policy" class="org.archive.crawler.datamodel.RobotsHonoringPolicy"> <!--Robots.txt協議控制,等下拆分來講明 -->  
  20. </newObject>  
  21.  <newObject name="frontier" class="org.archive.crawler.frontier.BdbFrontier"> <!-- Frontier 調度器,等下拆分來講明-- >  
  22. </newObject>  
  23. <map name="uri-canonicalization-rules"> <!-- URL規範化規則,URL規範化規則有序列表,規則適用於從上至下列出的順序,等下拆分來講明-->  
  24. </map>  
  25. <map name="pre-fetch-processors"> <!--預先處理鏈,在抓取前須要從網絡獲取或配置相關參數,等下拆分來講明 -->  
  26. </map>  
  27. <map name="fetch-processors">  <!-- 獲取鏈,等下拆分來講明 -->  
  28. </map>  
  29. <map name="extract-processors"> <!-- 抽取鏈,等下拆分來講明 -->  
  30. </map>  
  31. <map name="write-processors"> <!--寫鏈,等下拆分來講明 -->  
  32. </map>  
  33. <map name="post-processors"> <!-- 請求鏈:清理URI和在URI範圍內填充新的URI ,等下拆分來講明-->  
  34. </map>  
  35. <map name="loggers"> <!-- 統計跟蹤鏈.統計跟蹤模塊,指定用於監視抓取和寫日誌,以及報告和提供信息給用戶接口,等下拆分來講明-->  
  36. </map>  
  37. <newObject name="credential-store" class="org.archive.crawler.datamodel.CredentialStore"> <!--憑證存儲,如登錄憑證,等下拆分來講明 -->  
  38.  </newObject>  
  39.  </controller>  

3.接下來拆分每一個組件的配置文件一一進行說明,最後對Heritrix主要的配置也就是咱們能夠影響抓取的配置進行說明。緩存

   3.1:抓取範圍<newObject name="scope" class="org.archive.crawler.deciderules.DecidingScope">服務器

  

Xml代碼   收藏代碼
  1. <newObject name="scope" class="org.archive.crawler.deciderules.DecidingScope"><!-- 抓取範圍,構造CrawlScope-->  
  2.       <boolean name="enabled">false</boolean> <!-- 是否運行這個組件 -->  
  3.       <string name="seedsfile">seeds.txt</string> <!--種子文件名-->  
  4.       <boolean name="reread-seeds-on-config">true</boolean> <!-- 是否每個配置發生變法都要引起從新讀取原始種子文件 -->  
  5.       <newObject name="decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"> <!--抓取範圍限定的規則,因爲本身一直作的是垂直抓取,沒有使用以及研究它 -->  
  6.         <map name="rules"><!-- 不一樣的規則-->  
  7.           <newObject name="rejectByDefault" class="org.archive.crawler.deciderules.RejectDecideRule"> <!-- -->  
  8.           </newObject>  
  9.           <newObject name="acceptIfSurtPrefixed" class="org.archive.crawler.deciderules.SurtPrefixedDecideRule"><!-- -->  
  10.             <string name="decision">ACCEPT</string> <!-- -->  
  11.             <string name="surts-source-file"></string> <!--用於推斷SURT前綴的文件,文件裏的任何文件將轉換爲所提供的SURT前綴,顯示在行裏的SURT前綴都會經過+開始 -->  
  12.             <boolean name="seeds-as-surt-prefixes">true</boolean> <!--種子文件是否也應當解析成SURT前綴 -->  
  13.             <string name="surts-dump-file"></string> <!--保存SURT前綴的文件,用於實際調試SURTS時 -->  
  14.             <boolean name="also-check-via">false</boolean><!--是否也檢查該CrawlURI中的via -->  
  15.             <boolean name="rebuild-on-reconfig">true</boolean><!-- 當配置文件更改後,是否也跟着更改-->  
  16.           </newObject>  
  17.           <newObject name="rejectIfTooManyHops" class="org.archive.crawler.deciderules.TooManyHopsDecideRule"><!-- -->  
  18.             <integer name="max-hops">20</integer><!--最大躍點數,也就是抓取深度 -->  
  19.           </newObject>  
  20.           <newObject name="acceptIfTranscluded" class="org.archive.crawler.deciderules.TransclusionDecideRule"><!-- -->  
  21.             <integer name="max-trans-hops">3</integer><!--除去連接L,PathFromSeed的最大長度 -->  
  22.             <integer name="max-speculative-hops">1</integer><!--抽取的連接X,多是連接L或者嵌入式E,在JS裏的最大個數,經過pathFromSeed判斷 -->  
  23.           </newObject>  
  24.           <newObject name="rejectIfPathological" class="org.archive.crawler.deciderules.PathologicalPathDecideRule"><!-- -->  
  25.             <integer name="max-repetitions">2</integer><!--一個URL相同目錄段名最大重複次數,超過該值返回REJECT,如http://www.baidu.com/a/a/a/index.html ,其中/a出現三次,超過了2次,因此返回REJECT(拒絕)-->  
  26.           </newObject>  
  27.           <newObject name="rejectIfTooManyPathSegs" class="org.archive.crawler.deciderules.TooManyPathSegmentsDecideRule"><!-- -->  
  28.             <integer name="max-path-depth">20</integer><!--URL中段的次數是否超過該值,超過返回REJET,段表示http://www.baidu.com/a/b,其中a和b表示一個段 -->  
  29.           </newObject>  
  30.           <newObject name="acceptIfPrerequisite" class="org.archive.crawler.deciderules.PrerequisiteAcceptDecideRule"><!-- -->  
  31.           </newObject>  
  32.         </map>  
  33.       </newObject>  
  34.     </newObject>  

 

    3.2: HTTP協議<map name="http-headers">cookie

   

Xml代碼   收藏代碼
  1. <map name="http-headers"><!-- HTTP協議,當處理爬蟲HTPTP協議時須要構造 -->  
  2.       <string name="user-agent">Mozilla/5.0 (compatible; heritrix/1.14.3 +http://127.0.0.1)</string><!-- 用戶代理,這個值字段必須包含有效的URL,如此才能夠用爬蟲訪問我的或者組織的網站 -->  
  3.       <string name="from">guoyunsky@hotmail.com</string><!--聯繫人信息,該字段必須包含有效的email,來表明使用本爬蟲的我的或組織 -->  
  4.     </map>  

 

    3.3:爬蟲協議 <newObject name="robots-honoring-policy" class="org.archive.crawler.datamodel.RobotsHonoringPolicy">網絡

    

Xml代碼   收藏代碼
  1. <newObject name="robots-honoring-policy" class="org.archive.crawler.datamodel.RobotsHonoringPolicy"><!--Robots.txt協議控制 -->  
  2.       <string name="type">classic</string>         <!-- 爬蟲協議類型,有classic,ignore,custom,most-favored,most-favored-set 5種類型 -->  
  3.       <boolean name="masquerade">false</boolean>   <!-- 咱們應當在當爬蟲遵循全部它聲明的規則時假裝另外一個代理,惟一相關的類型是:most-favored和most-favored-set-->  
  4.       <text name="custom-robots"></text>  <!-- 若是type是custom,則機器人自定義-->  
  5.       <stringList name="user-agents"> <!-- 若是type是most-favored-set,代替的user-agents,這裏列表多個 -->  
  6.       </stringList>  
  7.     </newObject>  

 

   3.4:Frontier 調度器<newObject name="frontier" class="org.archive.crawler.frontier.BdbFrontier"><!-- Frontier 調度器-->socket

  

Xml代碼   收藏代碼
  1. <newObject name="frontier" class="org.archive.crawler.frontier.BdbFrontier"><!-- Frontier 調度器-->  
  2.       <float name="delay-factor">4.0</float><!-- 從同一個服務器(host)獲取須要等待的間隔時間,能夠預防無節制的抓取一個網站.一般是用該值去乘以上一個url的抓取時間來表示爲下一個url須要等待的時間 -->  
  3.       <integer name="max-delay-ms">20000</integer><!-- 最大的等待時間,單位毫秒 -->  
  4.       <integer name="min-delay-ms">2000</integer><!--  最小等待時間,單位毫秒-->  
  5.       <integer name="respect-crawl-delay-up-to-secs">300</integer><!--當讀取robots.txt時推遲抓取的時間,單位毫秒 -->  
  6.       <integer name="max-retries">30</integer><!-- 已經嘗試失敗的URI的從新嘗試次數,不少人在跑Heritrix的時候,發現只跑了30個URL就中止了,實際上是一個URL都沒成功,它這裏重試了30次 -->  
  7.       <long name="retry-delay-seconds">900</long><!--默認多長時間咱們從新去抓取一個檢索失敗的URI -->  
  8.       <integer name="preference-embed-hops">1</integer><!--嵌入或者重定向URI調度等級,例如,該值爲1(默認也爲1),調度時將比普通的link等級高.若是設置爲0,則和link同樣 -->  
  9.       <integer name="total-bandwidth-usage-KB-sec">0</integer><!--爬蟲所容許的最大寬帶平均數,實際的讀取速度是不受此影響的,當爬蟲使用的寬帶接近極限時,它會阻礙新的URI去處理,0表示沒有限制 -->  
  10.       <integer name="max-per-host-bandwidth-usage-KB-sec">0</integer><!--爬蟲容許的每一個域名所使用的最大寬帶數,實際的讀取速度不會受此影響,當爬蟲使用的寬帶接近極限時,它會阻礙新的URI去處理,0表示沒有限制 -->  
  11.       <string name="queue-assignment-policy">org.archive.crawler.frontier.HostnameQueueAssignmentPolicy</string><!--定義如何去分配URI到各個隊列,這個類是相同的host的url就屬於同一個隊列 -->  
  12.       <string name="force-queue-assignment"></string><!--強制URI的隊列名字, -->  
  13.       <boolean name="pause-at-start">false</boolean><!-- 在URI被嘗試前,當爬蟲啓動後是否暫停?這個操做能夠在爬蟲工做前核實或調整爬蟲。默認爲false -->  
  14.       <boolean name="pause-at-finish">false</boolean><!-- 當爬蟲結束時是否暫停,而不是馬上中止工做.這個操做能夠在爬蟲狀態仍是可用時,有機會去顯示爬蟲結果,並有可能去增長URI和調整setting,默認爲false-->  
  15.       <boolean name="source-tag-seeds">false</boolean><!-- 是否去標記經過種子抓取的uri做爲種子的遺傳,用source值代替.-->  
  16.       <boolean name="recovery-log-enabled">true</boolean><!--設置爲false表示禁用恢復日誌寫操做,爲true時候表示你用checkpoint去恢復crawl銷燬的數據 -->  
  17.       <boolean name="hold-queues">true</boolean><!--當隊列數量未達到時,是否不讓其運行,達到了才運行。是否要去持久化一個建立的每一個域名一個的URI工做隊列直到他們須要一直繁忙(開始工做)。若是爲false(默認值),隊列會在任什麼時候間提供URI去抓取。若是爲true,則隊列一開始(還有收集的url)會處於不在活動中的狀態,只有在Frontier須要另一個隊列使得全部線程繁忙的時候纔會讓一個新的隊列出於活動狀態. -->  
  18.       <integer name="balance-replenish-amount">3000</integer><!--補充必定的數量去使得隊列平衡,更大的數目則意味着更多的URI將在它們處於等待隊列停用以前將被嘗試 -->  
  19.       <integer name="error-penalty-amount">100</integer><!-- 當隊列中的一個URI處理失敗時,須要另外處罰的數量.加速失活或問題隊列,反應遲鈍的網站徹底退休。,默認爲100-->  
  20.       <long name="queue-total-budget">-1</long><!--單個隊列所容許的活動的開支,隊列超出部分將被重試或者再也不抓取,默認爲-1,則表示沒有這個限制 -->  
  21.       <string name="cost-policy">org.archive.crawler.frontier.ZeroCostAssignmentPolicy</string><!-- 用於計算每一個URI成本,默認爲UnitCostAssignmentPolicy則認爲每一個URI的成本爲1-->  
  22.       <long name="snooze-deactivate-ms">300000</long><!--任何snooze延遲都會影響隊列不活動,容許其餘隊列有機會進入活動狀態,一般設置爲比在成功獲取時暫停時間長,比鏈接失敗短,默認爲5分鐘 -->  
  23.       <integer name="target-ready-backlog">50</integer><!--準備積壓隊列的目標大小,這裏多個隊列將會進入準備狀態即便線程再也不等待.只有hold-queues爲true纔有效,默認爲50 -->  
  24.       <string name="uri-included-structure">org.archive.crawler.util.BdbUriUniqFilter</string><!-- -->  
  25.       <boolean name="dump-pending-at-close">false</boolean><!-- -->  
  26.     </newObject>  

 

   3.5:URL規範化規則,主要用來規範化每一個URL,用Heritrix默認的就行了,這裏不作說明了,其實也是經過各類規則

   3.6:預先處理鏈組件: <map name="pre-fetch-processors">

Xml代碼   收藏代碼
  1. <map name="pre-fetch-processors"> <!--預先處理鏈,在抓取前須要從網絡獲取或配置相關參數 -->  
  2.       <newObject name="Preselector" class="org.archive.crawler.prefetch.Preselector"><!--該組件使用的類 -->  
  3.         <boolean name="enabled">true</boolean><!--是否啓用該組件 -->  
  4.         <newObject name="Preselector#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- 該組件的規則,能夠忽略不符合規則的URL不處理-->  
  5.           <map name="rules"><!-- 該組件的規則-->  
  6.           </map>  
  7.         </newObject>  
  8.         <boolean name="override-logger">false</boolean><!-- 若是啓用則覆蓋這個類的默認日誌器,默認日誌器將日誌打印在控制檯.覆蓋的日誌器將把全部日誌發送到在日誌目錄下的以本類命名的日誌文件中。在heritrix.properties中設置好日誌等級和日誌格式,這個屬性在重啓後知獲取一次. -->  
  9.         <boolean name="recheck-scope">true</boolean><!--是否須要在這一步從新檢索Crawl Scope -->  
  10.         <boolean name="block-all">false</boolean><!--指定全部的URIS(一般是由host給定)在這一步阻止 -->  
  11.         <string name="block-by-regexp"></string><!-- 指定容許全部在這裏匹配這個正則表達式的則阻止-->  
  12.         <string name="allow-by-regexp"></string><!-- 指定容許在這裏全部匹配正則表達式的則容許,會對每一個url都進行判斷-->  
  13.       </newObject>  
  14.       <newObject name="Preprocessor" class="org.archive.crawler.prefetch.PreconditionEnforcer"><!-- -->  
  15.         <boolean name="enabled">true</boolean><!-- -->  
  16.         <newObject name="Preprocessor#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- -->  
  17.           <map name="rules"><!-- -->  
  18.           </map>  
  19.         </newObject>  
  20.         <integer name="ip-validity-duration-seconds">86400</integer><!--DNS有效的最低時間間隔(單位爲秒),若是記錄的DNS TTL較大,那將被用來代替,設置爲0則表示永久有效 -->  
  21.         <integer name="robot-validity-duration-seconds">86400</integer><!--提取robots.txt信息有效時間(單位爲秒),若是該設置爲0則robots.txt信息永不過時 -->  
  22.         <boolean name="calculate-robots-only">false</boolean><!--是否只計算一個URI的robots狀態,沒有任何實際應用的除外.若是該值爲true,排除的url只將記錄在crawl.log,但仍將抓取,默認爲false(false的話,排除的url是不該該被抓取的)-->  
  23.       </newObject>  
  24.     </map>  

 

   3.7:獲取組件:<map name="fetch-processors">

Xml代碼   收藏代碼
  1. <map name="fetch-processors">  <!-- 獲取鏈 -->  
  2.      <newObject name="DNS" class="org.archive.crawler.fetcher.FetchDNS"><!--獲取DNS使用的類 -->  
  3.        <boolean name="enabled">true</boolean><!-- 是否啓用該組件 -->  
  4.        <newObject name="DNS#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!--規則,用於忽略不符合規則的URL -->  
  5.          <map name="rules">  
  6.          </map>  
  7.        </newObject>  
  8.        <boolean name="accept-non-dns-resolves">false</boolean><!-- -->  
  9.        <boolean name="digest-content">true</boolean><!-- 是否執行文摘(將DNS類容經過如下算法轉換爲指紋值,用於區別不一樣的DNS) -->  
  10.        <string name="digest-algorithm">sha1</string><!-- 用什麼算法轉換指紋-->  
  11.      </newObject>  
  12.      <newObject name="HTTP" class="org.archive.crawler.fetcher.FetchHTTP"><!--得到HTTP使用的類 -->  
  13.        <boolean name="enabled">true</boolean><!-- 是否啓用該組件-->  
  14.        <newObject name="HTTP#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- 規則,用於忽略不符合規則的URL -->  
  15.          <map name="rules"><!-- -->  
  16.          </map>  
  17.        </newObject>  
  18.        <newObject name="midfetch-decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- 適用於中間抓取規則,在咱們開始去下載網頁前相應header.若是最後決定拒絕,在全部內容讀取以前中止抓取-->  
  19.          <map name="rules">  
  20.          </map>  
  21.        </newObject>  
  22.        <integer name="timeout-seconds">1200</integer><!--若是抓取在規定時間內(秒)沒有完成,即便它還正在處理中,也是放棄。設置爲0則沒有這個限制,但這裏不推薦設置爲0,由於線程會一直等到抓取結束 -->  
  23.        <integer name="sotimeout-ms">20000</integer><!--若是一個Socket在規定時間內(毫秒)沒有反應,則將放棄鏈接或者讀取。這裏不必定是在抓取期間當即放棄,會嘗試從新鏈接和從新讀取直到這個設置的時間到了.設置爲0則沒這個限制,但這裏不推薦,由於Socket會無限期處理 -->  
  24.        <integer name="fetch-bandwidth">0</integer><!--從一個服務器抓取數據最大速度(KB/秒),0表示沒有限制 -->  
  25.        <long name="max-length-bytes">0</long><!-- 最大抓取長度,超過這個長度將被截取,0表示沒有限制-->  
  26.        <boolean name="ignore-cookies">false</boolean><!--是否禁用cookie處理 -->  
  27.        <boolean name="use-bdb-for-cookies">true</boolean><!-- 是否在BDB中保存Cookie-->  
  28.        <string name="load-cookies-from-file"></string><!-- 預先載入cookie的來源文件路徑-->  
  29.        <string name="save-cookies-to-file"></string><!-- 當抓取結束,保存cookie的文件-->  
  30.        <string name="trust-level">open</string><!--SSL證書信任等級,等級範圍包括open(默認值,信任全部證書,包括過時,自簽名,還有那些咱們沒有CA的)、loose(只信任自簽名的證書)、normal(全部不包括自簽名的證書)、strict(最嚴格的,證書必須有效而且DN必須匹配服務器名) -->  
  31.        <stringList name="accept-headers"><!--在每一個請求裏接受完整的Header,如:Accept-Language: en -->  
  32.        </stringList>  
  33.        <string name="http-proxy-host"></string><!-- 代理IP設置,若是須要只能設置一個,配置這裏可使用代理IP去抓取-->  
  34.        <string name="http-proxy-port"></string><!-- 代理端口設置,若是須要只能設置一個-->  
  35.        <string name="default-encoding">GB2312</string><!--文件編碼,若是沒有在Http Header指定,將採用默認的ISO-8859-1 -->  
  36.        <boolean name="digest-content">true</boolean><!-- 是否去執行一個正在運行中的要重試context-bodies的digest hash-->  
  37.        <string name="digest-algorithm">sha1</string><!-- 去執行正在運行中的要重試context-bodies的digest hash的算法,如MS5,SHA1-->  
  38.        <boolean name="send-if-modified-since">true</boolean><!--是否發送'If-Modified-Since' header,若是上次的Last-Modified抓取歷史消息在URI歷史中有效-->  
  39.        <boolean name="send-if-none-match">true</boolean><!--是否發送'If-Node-Match' header,若是上次的Etag抓取歷史信息在URI歷史中有效 -->  
  40.        <boolean name="send-connection-close">true</boolean><!-- 每次請求是否發送'Connection: close' header-->  
  41.        <boolean name="send-referer">true</boolean><!--每次請求是否發送'Referer' header,'Referer' header包含crawler來自哪裏,在目前發現的URI頁面裏。'Referer'一般記錄在遠程服務器上,能夠協助網站管理員去找出爬蟲抓取了哪些特定的區域。 -->  
  42.        <boolean name="send-range">false</boolean><!--是否發送'Range' header當文檔尺寸最大下載字節數限制。要有禮貌的道HTTP服務器而且發送'Range' header,說明你只是對前n個字節感興趣。若是文檔尺寸最大下載字節數大於0,在'206 Partial Content'相應狀態裏發送'Range' header,這樣比只是截斷超出下載字節數要好,不過不多的狀況下發送'Range',將會獲得'416 Request Range Not Satisfiable'迴應 -->  
  43.        <string name="http-bind-address"></string><!--鏈接時使用本地IP地址和域名(綁定socket),當沒有指定時使用本地默認的地址 -->  
  44.      </newObject>  
  45.    </map>  

 

   3.8:抽取組件<map name="extract-processors"> <!-- 抽取鏈 -->

Xml代碼   收藏代碼
  1. <map name="extract-processors"> <!-- 抽取鏈 -->  
  2.      <newObject name="ExtractorHTTP" class="org.archive.crawler.extractor.ExtractorHTTP"><!-- 抽取HTTP-->  
  3.        <boolean name="enabled">true</boolean><!-- 是否啓用該組件 -->  
  4.        <newObject name="ExtractorHTTP#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- 規則,用於忽略不符合規則的URL -->  
  5.          <map name="rules"><!-- -->  
  6.          </map>  
  7.        </newObject>  
  8.      </newObject>  
  9.      <newObject name="ExtractorHTML" class="org.archive.crawler.extractor.ExtractorHTML"><!-- 抽取HTML,主要的抽取類 -->  
  10.        <boolean name="enabled">true</boolean><!-- 是否啓用該組件 -->  
  11.        <newObject name="ExtractorHTML#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!--  規則,用於忽略不符合規則的URL -->  
  12.          <map name="rules"><!-- -->  
  13.          </map>  
  14.        </newObject>  
  15.        <boolean name="extract-javascript">true</boolean><!-- 是否在Javascript裏找連接,默認爲true -->  
  16.        <boolean name="treat-frames-as-embed-links">true</boolean><!-- 若是以上值爲true,FRAME/IFRAME被當作嵌入式連接(像圖片,hop-type是E),不然就把他們當作導航連接,默認爲true -->  
  17.        <boolean name="ignore-form-action-urls">true</boolean><!-- 若是爲true,uri中再HTML FORM中出現的Action屬性將被忽略,默認爲false -->  
  18.        <boolean name="extract-only-form-gets">true</boolean><!--  若是爲true,則uri中HTML FORM中只抽取Method爲get的URL,Method爲post的將被忽略-->  
  19.        <boolean name="extract-value-attributes">true</boolean><!--若是爲true,則抽取那些像連接的字符串,這種操做可能會抽取到有效的和無效的連接,默認爲true-->  
  20.        <boolean name="ignore-unexpected-html">true</boolean><!--  若是爲true,則那種特殊格式的URL,好比圖片將不會被掃描,默認爲true -->  
  21.      </newObject>  
  22.    </map>  

 

   3.9:寫組件<map name="write-processors">

Xml代碼   收藏代碼
  1. <map name="write-processors"> <!--寫鏈 -->  
  2.       <newObject name="Archiver" class="com.steel.heritrix.extend.MyWriterMirror"><!--這裏我是用的本身的寫鏈-->  
  3.         <boolean name="enabled">true</boolean><!-- 是否啓用該組件 -->  
  4.         <newObject name="Archiver#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!--規則,用於忽略不符合規則的URL -->  
  5.           <map name="rules"><!-- -->  
  6.           </map>  
  7.         </newObject>  
  8.         <boolean name="case-sensitive">true</boolean> <!--true表示操做系統區分大小寫 -->  
  9.         <stringList name="character-map" /> <!--這是一個鍵值對組,用value代替key.-->  
  10.         <stringList name="content-type-map" /> <!--這是一個鍵值對組,用value代替key -->  
  11.         <string name="directory-file">index.html</string> <!-- 若是給定的URL不是明確的HTML,則從這個URL去獲取-->  
  12.         <string name="dot-begin">%2E</string> <!--若是一個段以.開頭,則用這個值替換它。 -->  
  13.         <string name="dot-end">.</string> <!--若是一個目錄以.結尾,則用這個值替換它.全部的操做系統出了Windows,.是建議使用的.但Windws,%%2E纔是建議的 -->  
  14.         <stringList name="host-map" /> <!--這是一個鍵值對組,若是一個host名字裏匹配該key,則用value值替換它。當一個host使用多個name時這個能夠保持一致性,如:[12.34.56.78 www42.foo.com] -->  
  15.         <boolean name="host-directory">true</boolean> <!--是否建立在url在host命名中的子目錄.如www.baidu.com建立www.baidu.com這個目錄,而www.baidu.com/zhidao,則在www.baidu.com目錄後面再建立知道這個子目錄 -->  
  16.         <string name="path">mirror</string> <!-- 用於下載html文件的頭目錄-->  
  17.         <integer name="max-path-length">1023</integer> <!--文件系統路徑最大長度 -->  
  18.         <integer name="max-segment-length">255</integer> <!-- 文件系統路徑中段路徑的最大長度-->  
  19.         <boolean name="port-directory">false</boolean> <!--在url中是否建立一個以port命名的子目錄 -->  
  20.         <boolean name="suffix-at-end">true</boolean> <!--若是爲true,則後綴放在url中查詢段的後面.若是爲false則放在前面 -->  
  21.         <string name="too-long-directory">LONG</string> <!--若是url中目錄都超過或者接近超過文件系統最大長度,超過部分它們都將用這個代替. -->  
  22.         <stringList name="underscore-set" /> <!--若是一個目錄名在列表裏忽略大小寫,那麼_將放在它前面.全部的文件系統除了Windows,這個是不須要的.Windows裏須要注意的是:[com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9                                            con nul prn] -->  
  23.       </newObject>  
  24.     </map>  

 

   3.10:請求鏈組件<map name="post-processors">裏面能夠配置本身的調度器

Xml代碼   收藏代碼
  1. <map name="post-processors"> <!-- 請求鏈:清理URI和在URI範圍內填充新的URI -->  
  2.       <newObject name="Updater" class="org.archive.crawler.postprocessor.CrawlStateUpdater"><!-- -->  
  3.         <boolean name="enabled">true</boolean><!-- -->  
  4.         <newObject name="Updater#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- -->  
  5.           <map name="rules"><!-- -->  
  6.           </map>  
  7.         </newObject>  
  8.       </newObject>  
  9.       <newObject name="LinksScoper" class="org.archive.crawler.postprocessor.LinksScoper"><!-- -->  
  10.         <boolean name="enabled">true</boolean><!-- -->  
  11.         <newObject name="LinksScoper#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- -->  
  12.           <map name="rules">  
  13.           </map>  
  14.         </newObject>  
  15.         <boolean name="override-logger">false</boolean><!-- 若是啓用則覆蓋這個類的默認日誌器,默認日誌器將日誌打印在控制檯.覆蓋的日誌器將把全部日誌發送到  
  16.         在日誌目錄下的以本類命名的日誌文件中。在heritrix.properties中設置好日誌等級和日誌格式,這個屬性在重啓後知獲取一次. -->  
  17.         <boolean name="seed-redirects-new-seed">true</boolean><!-- 若是爲true,任何種子重定向的URL,一樣當作一個種子對待 -->  
  18.         <integer name="preference-depth-hops">-1</integer><!-- 種子重定向url hop等級設置.-->  
  19.         <newObject name="scope-rejected-url-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- -->  
  20.           <map name="rules">  
  21.           </map>  
  22.         </newObject>  
  23.       </newObject>  
  24.       <newObject name="Scheduler" class="com.steel.heritrix.extend.MyFrontierScheduler"><!-- 我本身的調度器 -->  
  25.         <boolean name="enabled">true</boolean><!-- -->  
  26.         <newObject name="Scheduler#decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence"><!-- -->  
  27.           <map name="rules"><!-- -->  
  28.           </map>  
  29.         </newObject>  
  30.       </newObject>  
  31.     </map>  

 

   3.11:統計跟蹤鏈組件<map name="loggers">

Xml代碼   收藏代碼
  1. <map name="loggers"> <!-- 統計跟蹤鏈.統計跟蹤模塊,指定用於監視抓取和寫日誌,以及報告和提供信息給用戶接口-->  
  2.       <newObject name="crawl-statistics" class="org.archive.crawler.admin.StatisticsTracker"><!--統計類 -->  
  3.         <integer name="interval-seconds">20</integer><!--寫日誌消息的時間間隔(秒) -->  
  4.       </newObject>  
  5.     </map>  
相關文章
相關標籤/搜索