StormCrawler的default-regex-filters.txt

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StormCrawler的default-regex-filters.txt相关的知识,希望对你有一定的参考价值。

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

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

+.*/dev/.*

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

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

答案

您可以根据需要在文件中包含尽可能多的+过滤器。

过滤的逻辑很简单

 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,它可能更直观。

以上是关于StormCrawler的default-regex-filters.txt的主要内容,如果未能解决你的问题,请参考以下文章

如何在StormCrawler中使用快速URL过滤器?

StormCrawler的default-regex-filters.txt

无法将StormCrawler连接到安全的Elasticsearch

在StormCrawler上获取拓扑以正确编写warc文件

Tika Parser放慢了StormCrawler的速度

在storm ui中,没有tuples被拓扑发出或传递。