[爬虫学习笔记]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;
        }

    }
}

转载于:https://www.cnblogs.com/WayneShao/p/5910620.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,可以使用正则表达式实现 URL 白名单过滤。具体步骤如下: 1. 定义白名单规则:使用正则表达式定义允许访问的 URL 规则。 例如,以下正则表达式匹配以 `https://www.example.com` 或 `http://www.example.com` 开头的 URL: ``` ^https?://www\.example\.com.* ``` 2. 使用白名单规则过滤 URL:对于每个请求的 URL,使用白名单规则进行匹配,如果 URL 符合规则,则允许访问,否则禁止访问。 例如,以下代码演示了如何使用正则表达式实现 URL 白名单过滤: ```java import java.util.regex.Pattern; public class UrlFilter { private final Pattern allowedPattern; public UrlFilter(String allowedRegex) { this.allowedPattern = Pattern.compile(allowedRegex); } public boolean isAllowed(String url) { return allowedPattern.matcher(url).matches(); } } ``` 在上面的代码中,`UrlFilter` 类包含一个构造函数,用于传入白名单规则的正则表达式。`isAllowed` 方法用于判断 URL 是否允许访问,它使用 `Pattern` 类的 `matcher` 方法对 URL 进行匹配,返回匹配结果。 例如,以下代码演示了如何使用 `UrlFilter` 类进行 URL 过滤: ```java UrlFilter filter = new UrlFilter("^https?://www\\.example\\.com.*"); String url1 = "https://www.example.com/path/to/file.html"; String url2 = "http://www.example.com/index.html"; String url3 = "https://www.google.com/search?q=java"; System.out.println(filter.isAllowed(url1)); // true System.out.println(filter.isAllowed(url2)); // true System.out.println(filter.isAllowed(url3)); // false ``` 在上面的代码中,我们先创建了一个 `UrlFilter` 对象,使用正则表达式 `^https?://www\\.example\\.com.*` 定义白名单规则。然后,我们分别对三个 URL 进行过滤,输出结果表明只有前两个 URL 符合白名单规则,最后一个 URL 不符合规则,被拒绝访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值