Nutch regex-urlfilter语法

时间:2012-12-14 18:22:33

标签: regex web-crawler nutch

我正在运行Nutch v.1.6,它正在正确抓取特定网站,但我似乎无法正确获取文件NUTCH_ROOT/conf/regex-urlfilter.txt的语法。

我想抓取的网站有一个类似于此的网址:

http://www.example.com/foo.cfm

在该页面上有许多符合以下模式的链接:

http://www.example.com/foo.cfm/Bar_-_Foo/Extra/EX/20817/ID=6976

我想抓取与上面第二个示例相匹配的链接。在我的regex-urlfilter.txt中,我有以下内容:

+^http://www.example.com/foo.cfm$
+^http://www.example.com/foo.cfm/(.+)*$

Nutch在第一个上匹配并正确抓取它,但似乎没有使用其他过滤器获取链接。我怎样才能让Nutch像上面的第二个一样抓取网址?

我试过以下但没有运气:

+^http://www.example.com/foo.cfm/(.+)*$
+^http://www.example.com/foo.cfm/(.)*$
+^http://www.example.com/foo.cfm/.+$
+^http://www.example.com/foo.cfm/(.*)*$

NUTCH_ROOT/urls/nutch我有:

http://www.example.com/foo.cfm/

1 个答案:

答案 0 :(得分:8)

根据http://wiki.apache.org/nutch/FAQ#What_happens_if_I_inject_urls_several_times.3F,您不能拥有多个网址(将被忽略)。如何将

+^http://www.example.com/foo.cfm/(.+)*$

应该覆盖您的第一行:+^http://www.example.com/foo.cfm$,或者,如果/出现问题,请尝试:

+^http://www.example.com/foo.cfm//?(.+)*$

//?应代表字符/