【问题标题】:Nutch regex-urlfilter syntaxNutch regex-urlfilter 语法
【发布时间】:2012-12-14 18:22:33
【问题描述】:

我正在运行 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 像上面第二个那样抓取 URL?

我尝试了以下方法,但没有成功:

+^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/

【问题讨论】:

    标签: regex web-crawler nutch


    【解决方案1】:

    根据http://wiki.apache.org/nutch/FAQ#What_happens_if_I_inject_urls_several_times.3F,您不能有多个 URL(它们将被忽略)。 只放怎么样:

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

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

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

    //? 应该代表字符 /

    【讨论】:

    • 根据您的两个建议,我得到:Stopping at depth=1 - no more URLs to fetch.,所以我不确定它为什么不起作用。不过,该常见问题解答看起来不错。
    • @NicYoung 那么这是否意味着它适用于深度 0?嗯,我发现了几篇关于你的错误信息的帖子:lucene.472066.n3.nabble.com/…(第二篇帖子);或stackoverflow.com/questions/11710492/…
    • 感谢您在常见问题解答中找到多个 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    相关资源
    最近更新 更多