crawler4j源码分析(五)Robots协议

       本节来看看crawler4j是如何支持robots协议的。对robots协议的支持主要目的就是遵守礼貌爬取,即:按照服务器制定的规则来爬取,只抓取允许抓取的,不让抓的不抓。

在crawler4j中对robots的支持包括如下几个类:RobotstxtConfig,RobotstxtServer,HostDirectives,RuleSet,RobotstxtParser。

      首先简单介绍一下上述几个类的主要作用:

      RobotstxtConfig:存放了robots相关的配置,如是否开启robots,cache的大小,以及user-agent。。

      RobotstxtServer:robots的主类,存放cache规定大小的robots项,实现对外的robots功能,后面详解介绍

      HostDirectives:一个host的robots记录,实现具体的robots规则。

      RuleSet:存放具体的robots条目,包括:allow和disallow。

      RobotstxtParser:负责将得到的robots文件解析成具体的robots条目。

     下面我们从如下三个方面来展开分析:

     robots记录的访问,缓存的更新策略,记录的存放。

     Robots记录的访问:

     整个robots模块对外的接口只有一个,即:RobotstxtServer.allows(WebURL webURL),这个接口在两个地方被调用,一个是往Frontier中增加seedUrl时,另个是将新发现

的Url往Frontier中增加的时候。而这个函数就实现了对robots缓存的访问,在RobotstxtServer中robots记录按照host为单位来存放:

protected final Map<String, HostDirectives> host2directivesCache = new HashMap<>();
    下面就看看allows函数的实现流程,先看源码:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值