java - Heritrix 单站点抓取,包括所需的场外 Assets

标签 java web-crawler heritrix

我相信在编译 Heritrix 决策规则时需要帮助,尽管我对其他 Heritrix 建议持开放态度:https://webarchive.jira.com/wiki/display/Heritrix/Configuring+Crawl+Scope+Using+DecideRules

我需要抓取网站的整个副本(在 crawler-beans.cxml 种子列表中),但不抓取任何外部(站外)页面。应下载呈现当前网站所需的任何外部资源,但不要跟随任何指向站外页面的链接 - 仅下载当前页面/域的 Assets 。

例如,呈现页面所需的 CDN 内容可能托管在外部域(可能是 AWS 或 Cloudflare)上,因此我需要下载该内容以及跟踪所有域内链接,但不需要跟随指向当前域范围之外的页面的任何链接。

最佳答案

您可以使用 3 个决定规则:

  • 第一个接受所有非 html 页面,使用 ContentTypeNotMatchesRegexDecideRule
  • 第二个接受当前域中的所有 url。
  • 第三个拒绝所有不在域中且不直接的页面 从域到达(alsoCheckVia 选项)

类似这样的事情:

<bean id="scope" 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.ContentTypeNotMatchesRegexDecideRule">
    <property name="decision" value="ACCEPT"/>
    <property name="regex" value="(?i)html|wml"/>
   </bean>
   <bean class="org.archive.modules.deciderules.surt.SurtPrefixedDecideRule">
    <property name="decision" value="ACCEPT"/>
    <property name="surtsSource">
     <bean class="org.archive.spring.ConfigString">
      <property name="value">
       <value>
        http://(org,yoursite,
       </value>
      </property> 
     </bean>
    </property>
   </bean>
   <bean class="org.archive.modules.deciderules.surt.NotSurtPrefixedDecideRule">
    <property name="decision" value="REJECT"/>
    <property name="alsoCheckVia" value="true"/>
    <property name="surtsSource">
     <bean class="org.archive.spring.ConfigString">
      <property name="value">
       <value>
        http://(org,yoursite,
       </value>
      </property> 
     </bean>
    </property>
   </bean>
  </list>
 </property>
</bean>

关于java - Heritrix 单站点抓取,包括所需的场外 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463262/

相关文章:

java - 出现奇怪的 filenotfound 异常

java - 如何对 hadoop 中的所有键/值对进行一般化简

elasticsearch - 删除后,Crawler会重新索引记录吗

java - 如何使用 HeaderedArchiveRecord 和 Heritrix 3.1 循环访问 WARC 文件

java - 在二叉树中具有特定和的叶子路径

java - 是什么导致了这个 NoClassDefFoundError 错误?

web-crawler - 如何在我的网站上抓取每个产品在谷歌上的类别

javascript - 检测 YouTube 上的 360 度全景视频

java - 在 Java 上运行网络蜘蛛

java - 对于有关构建搜索引擎的学术项目,什么是基于 Java 的优秀爬虫?