nutch 处理robots.txt原理

16 篇文章 0 订阅

形如大多SE一样,在bot搜寻过程中会检查网站robots.txt 文件,以便是否设置了针对自己的rules。

 

一.robots.txt常识

由于robots.txt是一个协议而不是规范,所以不同的SE会有自己的实际处理规则。nutch也一样。

看看它是怎样书写的:
      User-agent: unhipbot
      Disallow: /

      User-agent: webcrawler
      User-agent: excite
      Disallow:

      User-agent: *
      Disallow: /org/plans.html     #一般情况下,开头相同的url,较长的优先级较高
      Allow: /org/                    #优先级较低
      Allow: /serv
      Allow: /~mak

 

常规情况下的解析:
  unhipbot不允许访问此站下的所有url;but
        webcrawler&excite可以访问所有urls;but
        所有其它的robot不可以访问plans.html但可以访问/org/,/serv,/~mark开头的urls

 

注意user-agent为*时的情况,这是所有其它 user-agent的通配符表示,当没有其它过其它user-agent时,它是作用于所有bots,但这里明显作用了除unhibot,webcrawler,excite外的bots,因为如果将unhibot也归入*的话,那么就会有矛盾,如:

unhibot定义了全額拒绝访问,但在*下又定义了几个Allow,这样在前后不一致了。

 

另外,不同的bots也有支持rules不同的情况,有些支持正则。

rule后有没有'/'是完全不同的;

 

 

二.nutch处理robots.txt的特点:

nutch内部维护了一个http.robots.agents属性,此属性可以定义多个bot name,并以优先级递降的顺序排列。

 

1.不支持rules有通配符,只支持Url字串的正向匹配。如果需要这点可以自己修改即可;

2.支持Allow和Crawl-Delay;

3.nutch允许定义多个bot name,但如果robots.txt中有多个匹配时,只会取出第一个bot name的rules,其它忽略。这就是为什么nutch中强烈建议将http.agent.name放在agents的前面的原故;

4.如果不存在robots.txt或Disallow/Allow的值为空时,表明整站是crawlable;

5.不考虑url长短的优先级

 

references:

robots.txt

ntuch#RobotRulesParser.java

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值