Nutch regex-urlfilter 不工作

Nutch regex-urlfilter is not working

我正在抓取一个有很多子域的网站。我想限制几个网址的抓取。 例如,我有一个网站 http://www.123.com and i have sub urls ends with http://.123.com. I want to avoid http://www.def.123.com and http://www.ghi.123.com 从抓取我如何添加过滤器。

目前我应用了下面的过滤器,但它正在抓取这两个受限制的网址

+^http://*.123.com

-^http://www.def.123.com

-^http://www.def.123.com

正则表达式开头的注释-urlfilter.txt 说:

The first matching pattern in the file determines whether a URL is included or ignored

因此,由于您的第一个正则表达式匹配,并且以 + 开头,因此将抓取该网站的所有网址。 要解决此问题,请先放置更具体(排除)的 URL,然后放置一般规则。

您可以使用负前瞻:

+^https?://(?!(www.def|www.ghi).123.com(/.*)?$).*.123.com(/.*)?

这将接受任何以 https?://.*.123.com 模式开头的 url,除了 https?://www.def.123.comhttps?://www.ghi.123.com.

试试这个

+^(?:https?:\/\/)?(?:www\.)?123\.[a-zA-Z0-9.\S]+$
-^(?:https?:\/\/)?(?:www\.)?def\.[a-zA-Z0-9.\S]+$
-^(?:https?:\/\/)?(?:www\.)?ghi\.[a-zA-Z0-9.\S]+$

顺序很重要试试下面的

-^(http|https)://.*.123.com

+^(http|https)://123.com/ 或 +.