我正在爬网一个包含很多子域的网站。我想限制两个网址的抓取。 例如,我有一个网站http://www.123.com,并且我的子URL以http://.123.com结尾。我想避免http://www.def.123.com和http://www.ghi.123.com爬行如何添加过滤器。
当前,我在下面应用了过滤器,但它抓取了这两个受限网址
+ ^ http://*.123.com
答案 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.com
和https?://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/或+。