【爬虫学习笔记】Url过滤模块UrlFilter

Url Filter则是对提取出来的URL再进行一次筛选。不同的应用筛选的标准是不一样的,比如对于baidu/google的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那么它可能只需要满足某个条件的url,比如不需要图片的url,比如只需要某个特定网站的url等等。Url Filter是一个和应用密切相关的模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using Crawler.Common;

namespace Crawler.Processing
{
public class UrlFilter
{
public static List<Uri> RemoveByRegex(List<Uri> uris, params string[] regexs)
{
var uriList=new List<Uri>(uris);
for (var i = 0; i < uriList.Count; i++)
{
foreach (var r in regexs)
{
if (!RegexHelper.IsMatch(uriList[i].ToString(), r)) continue;
uris.RemoveAt(i);
i--;
}
}
return uriList;
}

public static List<Uri> SelectByRegex(List<Uri> uris, params string[] regexs)
{
var uriList = new List<Uri>();
foreach (var t in uris)
foreach (var r in regexs)
if (RegexHelper.IsMatch(t.ToString(), r))
if(!uriList.Contains(t))
uriList.Add(t);
return uriList;
}

}
}

欢迎关注我的其它发布渠道