Nutch regex-urlfilter不起作用

时间:2018-08-29 19:54:39

标签: solr nutch

我正在爬网一个包含很多子域的网站。我想限制两个网址的抓取。 例如,我有一个网站http://www.123.com,并且我的子URL以http://.123.com结尾。我想避免http://www.def.123.comhttp://www.ghi.123.com爬行如何添加过滤器。

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

  

+ ^ http://*.123.com

     

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

     

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

4 个答案:

答案 0 :(得分:0)

regex-urlfilter.txt开头的注释中说:

  

文件中的第一个匹配模式确定是包含URL还是忽略URL

因此,由于您的第一个正则表达式匹配,并且以+开头,因此将对来自此站点的所有URL进行爬网。 要解决此问题,请将更具体的(排除)URL放在首位,将一般规则放在最后。

答案 1 :(得分:0)

您可以使用否定前瞻:

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

这将接受以https?://.*.123.com模式开头的所有网址,但https?://www.def.123.comhttps?://www.ghi.123.com除外。

答案 2 :(得分:0)

尝试一下

int findValuesForDifference(int *A, int n, int *B, int m, int k)
{
    int low, high, middle, i;

    quickSort(A, low, high);

    /* using binary search sorted Array A, for each element of array B */
    for (i = 0; i < m; i++) {
        low = 0;
        high = n - 1
        while (low <= high) {
            middle = (low + high) / 2;
            if (k + B[i] == A[middle])
                return 1;
            else if (k + B[i] < A[middle])
                high = middle - 1;
            else
                low = middle + 1;
        }
    }
    return 0;
}

答案 3 :(得分:0)

顺序很重要,请尝试以下

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

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