StormCrawler 的默认正则表达式-filters.txt
StormCrawler's default-regex-filters.txt
我已经弄乱了一段时间,一直无法弄清楚 StormCrawler 的 default-regex-filters.txt 文件是如何工作的。
在一个示例中,我需要将爬虫限制为仅爬取该站点上其他目录的 https://www.example.com/dev 和 none 下的项目。我把规则
+.*\/dev\/.*
进入 default-regex-filters.txt 的最后一行,但它似乎不起作用。我认为标准的正则表达式规则适用,但事实并非如此。上面的示例之一在它之前有/没有 \ 并且它正在工作?我对此感到很困惑,想知道该文件中的正则表达式是否有作弊 sheet 以便我可以更轻松地构建它们。
作为后续,文件中只能有一个+过滤器是否也是如此?我依稀记得读过那个,但想确定一下。
您可以根据需要在文件中添加任意多个过滤器。
过滤的逻辑很简单
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 文件是如何工作的。
在一个示例中,我需要将爬虫限制为仅爬取该站点上其他目录的 https://www.example.com/dev 和 none 下的项目。我把规则
+.*\/dev\/.*
进入 default-regex-filters.txt 的最后一行,但它似乎不起作用。我认为标准的正则表达式规则适用,但事实并非如此。上面的示例之一在它之前有/没有 \ 并且它正在工作?我对此感到很困惑,想知道该文件中的正则表达式是否有作弊 sheet 以便我可以更轻松地构建它们。
作为后续,文件中只能有一个+过滤器是否也是如此?我依稀记得读过那个,但想确定一下。
您可以根据需要在文件中添加任意多个过滤器。
过滤的逻辑很简单
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,这可能更直观。