【问题标题】:Understanding the Nutch Regex pattern了解 Nutch 正则表达式模式
【发布时间】:2015-05-29 10:09:00
【问题描述】:

我对 Nutch 很陌生。我正在使用 Nutch 2.3 来抓取一个网站,在这里我只想抓取一些与特定模式匹配的链接。正如我们所知,我们必须使用regex-urlfilter.txt.. 所以我在我的 regex-urlfilter.txt 文件中配置了类似下面的内容,但结果是 0 个已抓取的 URL。

我要抓取的网址应符合以下模式:

http://abc.test.com/profiles/people/a/1.html

在上面的 URL 中,我们可以在末尾看到/a/1.html。我只想在这部分应用正则表达式。字母'a' could be [a-z] 和数字'1' could be [1-20]。 URL( http://abc.test.com/profiles/people)的其余部分没有变化。

希望我的要求现在很清楚

下面是我在/bin/seed/urls.txt中写的

http://abc.test.com/profiles/people/a/1.html

我也试过http://abc.test.com/

下面是我在 regex-urlfilter.txt 文件中的正则表达式模式

# accept anything else
+^http://abc.test.com/profiles/people/([a-z]*\.)/([0-20]*\.).html

我在抓取时得到 0 个 URL。我假设我在 urls.txt 文件或 regex-urlfilter.txt

中犯了一些错误

有人请帮我正确配置

提前谢谢..

【问题讨论】:

    标签: regex web-crawler nutch


    【解决方案1】:

    根据Nutch Tutorial,您需要对变量部分使用正则表达式,并且这样做是正确的,但是您的正则表达式需要稍作修正。

    正则表达式中的文字点. 必须转义。 ([a-z]*\.)/([0-20]*\.).html 表示 小写英文字母,出现 0 次或多次,然后是文字 .,然后是文字 /,然后是 0 或更多 0s、1s、2s(@ 987654330@),后跟文字 .,然后是任意字符和 html 文字字符串

    所以,您正在尝试允许类似的字符串

    http://abc.test.com/profiles/people/./.^html
    

    看,你要求. 在最后的/ 之前。事实并非如此,我相信。

    所以,使用

    +^http://abc\.test\.com/profiles/people/[a-zA-Z]+/([1-9]|1[0-9]|20)\.html
    

    demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2012-01-21
      • 2019-10-11
      相关资源
      最近更新 更多