[爬虫学习笔记]Url过滤模块UrlFilter

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

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;
        }

    }
}

时间: 2025-01-18 17:24:53

[爬虫学习笔记]Url过滤模块UrlFilter的相关文章

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen()

Python学习笔记-安装MySQLdb模块

模块下载地址: MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions http://www.codegood.com/archives/129 直接点击安装exe即可,如果缺少dll文件,可以百度下载相关dll文件. Python学习笔记-安装MySQLdb模块

Perl语言学习笔记 11 Perl模块

1.模块来源:随Perl发行版本一起打包.从CPAN下载 2.阅读模块文档:perldoc CGI 3.安装模块 makemaker方式: 指定安装目录: Module::build方式: cpan方式: 4.File::basename模块 5.仅选用模块的部分函数 导入引用列表即可 10.不引入任何函数 通过全名的方式使用: 11.File:Spec模块 12.CGI.pm 13.数据库与DBI DBI:数据库接口(Database Interface) 还需安装对应版本的数据库驱动程序DB

BIOS学习笔记之UEFI模块机制

本文旨在简单的介绍一下UEFI的模块机制: BIOS是固化在电脑主板上的一段程序,主要功能就是初始化主板,最后加载操作系统(OS):而UEFI通俗一点讲就是一种BIOS的规范,它提出了一种BIOS的实现架构并提供了一套开源的实现. 我们知道Linux的模块机制是通过宏来定义模块的入口点的(参考:Linux学习笔记之内核启动流程与模块机制),而UEFI的模块机制理解起来更容易,它的每个模块都有一个inf文件,里面描述了模块的详细信息,比如入口点(入口函数).模块包含哪些源文件等. 以U盘驱动为例:

Python学习笔记__5章 模块

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在Python中,一个.py文件就称之为一个模块(Module) 1.1.使用模块的好处 提高了代码的可维护性 当一个模块编写完毕,就可以被其他地方引用 避免函数名和变量名冲突.相同名字的函数和变量可以分别存在不同的模块中 1.2.python组织模块的方法 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Pack

静觅爬虫学习笔记2-urllib库的基本使用

1.什么是Urllib 它是Python内置的Http请求库 urllib.request   请求模块 urllib.error       异常处理模块 urllib.parse      url解析模块 urllib.robotparser robots.txt解析模块 2.urlopen 帮助我们发送request请求 第一个参数为网站的url,第2个参数是一些额外i的数据,例如post的数据,第3个是超时的设置,其他自行百度 举个简单的例子: 3.响应 响应只要注意响应类型,状态码和响

[爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

      最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的.使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client.DNS Server接口.使用该接口可轻松实现DNS客户请求端及服务器解析端.项目地址:http://arsofttoolsnet.codeplex.com/,Nuget包地址:https://www.nuget.org/packag

[爬虫学习笔记]基于 SimHash 的去重复处理模块ContentSeen的构建

      Internet上的一些站点常常存在着镜像网站(mirror),即两个网站的内容一样但网页对应的域名不同.这样会导致对同一份网页爬虫重复抓取多次.为了避免这种情况,对于每一份抓取到的网页,它首先需要进入ContentSeen模块.该模块会判断网页的内容是否和已下载过的某个网页的内容一致,如果一致,则该网页不会再被送去进行下一步的处理.这样的做法能够显著的降低爬虫需要下载的网页数.至于如果判断两个网页的内容是否一致,一般的思路是这样的:并不会去直接比较两个网页的内容,而是将网页的内容经