Nutch1.7学习笔记7:Robots协议处理流程

原创 2013年12月01日 20:35:38

Nutch1.7学习笔记7:Robots协议处理流程

作者:雨水,时间:2013-12-1博客地址:http://blog.csdn.net/gobitan

说明:通常来说,网络爬虫应该遵循网站所描述的robots协议。因此,任何网络爬虫都有关于robots协议部分的处理。

分析入口:Robot相关处理的入口位于Fetcher.java的L676,如下所示:

BaseRobotRules rules = protocol.getRobotRules(fit.url, fit.datum);

 

Fetcher抓取每个URL之前都会先查看系统之前是否已经获取了URL所对应的robots协议,如果已经获取了,则检查该URL是否符合robots协议的规则,如果不符合,则会跳过该URL不抓取。如下:

if(!rules.isAllowed(fit.u.toString())) {

                // unblock

                fetchQueues.finishFetchItem(fit,true);

                if (LOG.isDebugEnabled()) {

                  LOG.debug("Denied byrobots.txt: " + fit.url);

                }

                output(fit.url, fit.datum, null, ProtocolStatus.STATUS_ROBOTS_DENIED, CrawlDatum.STATUS_FETCH_GONE);

               reporter.incrCounter("FetcherStatus", "robots_denied", 1);

                continue;

              }

getRobotRules的过程如下:

网站所对应的Robot规则放在Hashtable<String,BaseRobotRules>缓存里,其中String键为协议和子域名的组合,BaseRobotRules值为该URL所对应的Robot规则。如当爬取http://www.apache.org/时,String的值就为http:www.apache.org。

如果是第一次访问这个域名时,那么通过该URL获取出来就是空null,此时将以该URL为基础生成一个获取robot的URL,如http://www.apache.org/robots.txt。然后发送HTTP请求获取该robot协议并调用RobotRulesParser.parseRules来解析。 解析成功后,就将其放入HashTable的缓存中。解析Robot协议的代码是引用的一个叫crawler-commons的第三方库,该库也是开源的,可以在https://code.google.com/p/crawler-commons/找到。Nutch1.7使用的是crawler-commons-0.2版本。

如果没有找到该robots.txt,那么系统将用默认的空规则,也就是允许抓取所有的页面。同时也将其作为该URL对应的规则放入HashTable缓存,这样下次访问该子域名的时候不用重复获取Robot规则,直接取出来进行判断即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Nutch1.7学习笔记7:Robots协议处理流程

Nutch1.7学习笔记7:Robots协议处理流程 作者:雨水,时间:2013-12-1博客地址:http://blog.csdn.net/gobitan 说明:通常来说,网络爬虫应该遵循网站所...
  • gobitan
  • gobitan
  • 2013年12月01日 20:35
  • 3239

Nutch一次爬取运行结果

zcwangjb@zctechzhjp:~/programs/nutch-1.2$ ./bin/nutch  crawl urls/seed.txt -dir localweb -depth 5 -t...
  • king_sky_wjb
  • king_sky_wjb
  • 2014年05月23日 15:00
  • 1473

拒绝蜘蛛协议(Robots Exclusion Protocol) .

(一)Robots Exclusion Protocol协议简介   当Robot访问一个Web站点时,比如http://www.some.com/,它先去检查文件http://www.some.c...
  • xiaoyu714543065
  • xiaoyu714543065
  • 2012年03月22日 08:39
  • 1347

网络爬虫排除协议robots.txt介绍及写法详解.

以上内容转载自:www.xgezhang.com Robots协议的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),它的功能是通过Robots文件告...
  • u014237185
  • u014237185
  • 2014年09月16日 16:31
  • 1834

VSCrawler爬虫项目介绍

VSCrawler是virjar大神写的一个java爬虫项目,VSCrawler接入了dungproxy作为网络层API,本身自带代理服务。比起其他流行的webmagic,Scrapy等爬虫框架,VS...
  • xiangxianghehe
  • xiangxianghehe
  • 2017年06月28日 00:11
  • 561

crawler4j爬虫--爬取技巧总结(鄙人之见)

阅读对象:有一定全文检索(最好会lucene)的理论和实践基础的同学。 对全文检索不是太了解的请参考我前几篇博客 首先,我想爬取图片,让自己的搜索 可以爬取图片,首先找一个图片网站我选取的一个网站...
  • yx511500623
  • yx511500623
  • 2013年09月15日 19:24
  • 3692

ROBOTS协议对SEO优化有什么影响?

Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓...
  • swlhome
  • swlhome
  • 2015年07月16日 14:13
  • 309

Robots协议详解

禁止搜索引擎收录的方法(robots.txt)一、什么是robots.txt文件?搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。您可以在您的网站中创建一个纯...
  • wallacer
  • wallacer
  • 2006年04月07日 15:49
  • 14584

Crawler4j快速入门实例

crawler4j是Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫。github地址:https://github.com/yasserg/crawler4j ...
  • huangbaokang
  • huangbaokang
  • 2017年08月29日 15:04
  • 129

网站爬虫web crawler学习笔记二

在我的上海网站优化博客中,说明了一下我对web crawler的学习体会,今天我继续分享一下对web crawler的理解与体会,要分享的学习体会是网站选择策略。 以当前规模的web环境下,即使...
  • cf0124
  • cf0124
  • 2012年10月17日 14:07
  • 971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nutch1.7学习笔记7:Robots协议处理流程
举报原因:
原因补充:

(最多只允许输入30个字)