Robots.txt是一种专门用于搜索引擎网络爬虫的文件,当构造一个网站时,如果作者希望该网站的内容被搜索引擎收录,就可以在网站中创建一个纯文本文件robots.txt,在这个文件中,声明该网站不想被robot访问的部分。这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。

  Heritrix在其说明文档中,表明它是一个完全遵守robots.txt协议的网络爬虫。这一点固然在宣传上起到了一定的作用。但是,在实际的网页采集过程中,这并不是一种最好的作法。因为大部分的网站并不会放置一个robots.txt文件以供搜索引擎读取,在互联网信息以几何级数增长的今天,网站总是在希望自己的内容不被人所利用的同时,又希望自己能够被更多的用户从搜索引擎上检索到。

  不过幸好,robots.txt协议本身只是一种附加的协议,网站本身并不能了解究竟哪些Socket联接属于爬虫哪些属于正常的浏览器连接。所以,不遵守robos.txt协议成为了更多搜索引擎的首选。

  使用过Heritrix的朋友就会发现这样一个问题,如果当一个网站没有放置robots.txt文件时,Heritrix总是要花上大量的时间试图去访问这样一个文件,甚至可能retry很多次。这无疑很大的降低了抓取效率。因此,为了提高抓取的效率,可以试着将对robots.txt的访问部分去除。

  在Heritrix中,对robots.txt文件的处理是处于PreconditionEnforcer这个Processor中的。PreconditionEnforcer是一个Prefetcher,当处理时,总是需要考虑一下当前这个链接是否有什么先决条件要先被满足的,而对robots.txt的访问则正好是其中之一。在PreconditionEnforcer中,有一个private类型的方法,它的方法签名为:
private boolean considerRobotsPreconditions(CrawlURI curi)

  PreconditionEnforcer文件的路径是:org.archive.crawler.prefetch.PreconditionEnforcer.java。

   把PreconditionEnforcer.java中的private boolean considerRobotsPreconditions(CrawlURI curi){}修改为

1     private boolean considerRobotsPreconditions(CrawlURI curi) {
2         return false;
3     }

  或者把代码的实现部分注释掉,最后return语句改为return false;

  该方法的含义为:在进行对参数所表示的链接的抓取前,看一下是否存在一个由robots.txt所决定的先决条件。很显然,如果对每个链接都有这样的处理。那么,很有可能导致整个抓取任务的失败。因此,需要对它进行调整。

  这个方法返回true时的含义为需要考虑robots.txt文件,返回false时则表示不需要考虑robots.txt文件,可以继续将链接传递给后面的处理器。所以,最简单的修改办法就是将这个方法整个注释掉,只留下一个false的返回值。经过笔者的试验,这种方法完全可行,抓取的速度提高了至少一半以上!

转载于:https://www.cnblogs.com/zhjsll/p/4265477.html

在Prefetcher中取消robots.txt的限制相关推荐

  1. 什么是robots协议?网站中的robots.txt写法和作用

    Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以 ...

  2. Robots.txt - 禁止爬虫(转)

    Robots.txt - 禁止爬虫 robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: v ...

  3. robots.txt文件详解

    我们知道,搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库. 对于网站管理 ...

  4. robots.txt介绍

    robots.txt是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被(漫游器)获取的. ...

  5. robots.txt文件的作用及写法 (搜索引擎)

    robots其实就是指Robots协议,Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过 ...

  6. 搜索引擎蜘蛛及网站robots.txt文件详解

    搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库. 对于网站管理者和内容提 ...

  7. Robots.txt - 禁止爬虫

    robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: value.常见的规则行:User-A ...

  8. rebots css,我的robots.txt中涉及到.htaccss文件的奇怪https/http错误

    我设置了一个网站,就像我之前做过很多次,但是当你真的在谷歌网站上得到一个erorr.我的robots.txt中涉及到.htaccss文件的奇怪https/http错误 clrhorizon.com/ ...

  9. ROBOTS.TXT在SEO优化中的运用(ROBOTS.TXT SEO优化实战)

    2019独角兽企业重金招聘Python工程师标准>>> 豆瓣网的robots.txt中有Crawl-delay.Visit-time.Request-rate,好多人搞不清楚这是什么 ...

最新文章

  1. 福利 | 如何创造可信的AI?人工智能大牛盖瑞·马库斯的11条建议
  2. string的find和find_first_of的区别
  3. Java中避免if-else-if:策略模式
  4. 数据库事务处理差异:可提交读和重复读区别
  5. phoneGap工程的创建
  6. 小米 OV 联合起来才不是为了对抗 Google!
  7. 第一章 Java代码执行流程
  8. python中avg函数的使用_PostgreSQL avg()函数
  9. C语言:字符串转为long long --- atoll函数
  10. asp获取用户坐标,通过微信公众号的js-sdk功能实现获取用户地址坐标
  11. IMO 双帐号同步API文档
  12. Simple Contrastive Representation Adversarial Learning for NLP Tasks
  13. hdu-1052 Tian Ji -- The Horse Racing
  14. rn源码ios_携程开源RN开发框架CRN
  15. 两个年月日怎么相减_(excle可以计算日期差值吗)excel表中,两个日期相减如何得出相差年月...
  16. 张拉拉再获融资,怎么做出一碗资本爱吃的兰州拉面?
  17. 查看服务器所有文件大小,查看服务器文件夹下内存大小
  18. 爬虫实现:获取微信好友列表爬取进行好友分析
  19. 机甲大师s1 python_大疆机甲大师S1,可视化模块编程机器人
  20. JAVA生成统一社会信用代码和组织机构代码

热门文章

  1. Ember.js系列文章
  2. 十款让 Web 前端开发人员更轻松的实用工具
  3. 建造者模式(Builder Pattern)简单随笔
  4. asp.net 子页面调用外部 js
  5. 超级数学计算机,超级计算器+
  6. CPU缓存一致性动态图
  7. mysql 技术交流群_二进制部署MySQL(运维技术交流群:926402931,欢迎大家一起来交流。)...
  8. python写入数据到excel中_Python写入数据到Excel
  9. python获取按键状态_谁在用 python 弹奏一曲菊花台
  10. Java学习lesson 09