【问题标题】:Heritrix DecidingScope regexp URIHeritrix DecidingScope 正则表达式 URI
【发布时间】:2014-11-25 19:52:56
【问题描述】:

我正在使用 HERITRIX 抓取一个名为 octetfarm.com 的网站。我希望爬虫对 URI(或 URL)进行正则表达式,如果存在字符串“octetfarm”,爬虫应该接受它。

我制定了两条规则

1 MatchesRegExpDecideRule "ACCEPT" 和正则表达式 ".octetfarm."

2 拒绝默认

当我在 octetfarm.com(我的非常简单的测试站点)上启动爬虫时,第一页只是一个链接,如下所示:

<a href="http://octetfarm.com/layer1/layer1.html">layer1</a>

为什么爬虫不遵循包含字符串“octetfarm”的那个简单链接。

这是我在 xml 中的规则

 <newObject name="decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence">
    <map name="rules">
      <newObject name="rejectByDefault" class="org.archive.crawler.deciderules.RejectDecideRule">
      </newObject>
      <newObject name="octetfarm" class="org.archive.crawler.deciderules.MatchesRegExpDecideRule">
        <string name="decision">ACCEPT</string>
        <string name="regexp">*.octetfarm.*</string>
      </newObject>
    </map>
  </newObject>

【问题讨论】:

    标签: regex heritrix


    【解决方案1】:

    您在那里列出的正则表达式不太正确;试试这个:

    <string name="regexp">.*octetfarm.*</string>
    

    这和你的唯一区别是直接在octetfarm之前的两个字符被颠倒了。

    .* 在正则表达式中是一个包含两部分的语句。 . 告诉正则表达式匹配任何字符(通常默认情况下不包括换行符),* 告诉正则表达式匹配它前面的 0 个或多个。

    这个正则表达式的完整效果是匹配是否有 0 个或更多的任何字符,直到看到字符串 octetfarm,然后是 0 个或更多的任何字符。

    仅当正则表达式引擎尝试匹配完整字符串时,将字符串octetfarm 与.* 任一侧包装实际上才重要;您可能会发现只有以下正则表达式可能对您有用,因为根据正则表达式引擎的设置,它可能只会在提供的文本中查找匹配的任何实例:

    <string name="regexp">octetfarm</string>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 2015-07-08
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多