了解Nutch Regex模式

时间:2015-05-29 10:09:00

标签: regex web-crawler nutch

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

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

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

在上面的网址中,我们最后可以看到/a/1.html。我想只在这部分应用正则表达式。字母'a' could be [a-z]和数字'1' could be [1-20]。网址( 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个网址。我假设我在 urls.txt 文件或 regex-urlfilter.txt

中犯了一些错误

请有人帮我正确配置

提前致谢..

1 个答案:

答案 0 :(得分:0)

根据Nutch Tutorial,您需要对变量部分使用正则表达式,并且您正在这样做,但您的正则表达式需要一个小的修正。

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

所以,你试图允许像

这样的字符串
html

请参阅,您需要http://abc.test.com/profiles/people/./.^html 在最终.之前。我相信情况并非如此。

所以,使用

/

请参阅demo