0

我已经搞砸了一段时间,并且无法理清 StormCrawler 的 default-regex-filters.txt 文件是如何工作的。

在一个示例中,我需要将爬虫限制为仅爬取https://www.example.com/dev下的项目,而不是该站点上的任何其他目录。我把规则

+.*\/dev\/.*

进入 default-regex-filters.txt 的最后一行,但它似乎不起作用。我认为标准正则表达式规则适用,但似乎并非如此。上面的示例之一在它之前有/没有 \ 并且它正在工作?我对此感到很困惑,想知道该文件中是否有正则表达式的备忘单,以便我可以更轻松地构建这些。

作为后续,文件中也只能有一个 + 过滤器吗?我依稀记得读过那篇文章,但想确定一下。

4

1 回答 1

0

您可以根据需要在文件中包含任意数量的 + 过滤器。

过滤的逻辑很简单

 public String filter(URL pageUrl, Metadata sourceMetadata, String url) {
    for (RegexRule rule : rules) {
        if (rule.match(url)) {
            return rule.accept() ? url : null;
        }
    }
    return null;
}

其中accept表示该模式有一个+。如果没有匹配的 URL 将被过滤。

难道是你离开了

# accept anything else
+.

在您添加的表达式之上?

您可能想看看可能更直观的FastURLFilter 。

于 2018-09-05T21:05:57.223 回答