首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heritrix DecidingScope regexp URI

Heritrix DecidingScope regexp URI
EN

Stack Overflow用户
提问于 2014-10-01 03:05:40
回答 1查看 279关注 0票数 0

我正在使用HERITRIX爬行一个名为octetfarm.com的站点。我希望爬虫在URI (或URL)上执行regexp,如果字符串"octetfarm“存在,爬虫应该接受它。

我制定了两条规则

1 MatchesRegExpDecideRule“接受”和regexp“.octetfarm”。

2个rejectByDefault

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

代码语言:javascript
复制
<a href="http://octetfarm.com/layer1/layer1.html">layer1</a>

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

以下是我的xml规则

代码语言:javascript
复制
 <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>
EN

回答 1

Stack Overflow用户

发布于 2014-10-01 03:32:04

您列出的正则表达式不太正确,请尝试如下:

代码语言:javascript
复制
<string name="regexp">.*octetfarm.*</string>

这与您的唯一不同之处在于,octetfarm前面的两个字符被反转了。

regex中的.*是由两部分组成的语句。.告诉regex匹配任何字符(通常默认情况下不包含换行符),而*告诉regex匹配它前面的任何字符中的0或更多。

这个正则表达式的效果是在看到字符串octetfarm之前匹配任何字符中的0或多个字符,后面是任何字符的0或多个字符。

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

代码语言:javascript
复制
<string name="regexp">octetfarm</string>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26133484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档