在Prefetcher中取消robots.txt的限制
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的限制相关推荐
- 什么是robots协议?网站中的robots.txt写法和作用
Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以 ...
- Robots.txt - 禁止爬虫(转)
Robots.txt - 禁止爬虫 robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: v ...
- robots.txt文件详解
我们知道,搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库. 对于网站管理 ...
- robots.txt介绍
robots.txt是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被(漫游器)获取的. ...
- robots.txt文件的作用及写法 (搜索引擎)
robots其实就是指Robots协议,Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过 ...
- 搜索引擎蜘蛛及网站robots.txt文件详解
搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库. 对于网站管理者和内容提 ...
- Robots.txt - 禁止爬虫
robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: value.常见的规则行:User-A ...
- rebots css,我的robots.txt中涉及到.htaccss文件的奇怪https/http错误
我设置了一个网站,就像我之前做过很多次,但是当你真的在谷歌网站上得到一个erorr.我的robots.txt中涉及到.htaccss文件的奇怪https/http错误 clrhorizon.com/ ...
- ROBOTS.TXT在SEO优化中的运用(ROBOTS.TXT SEO优化实战)
2019独角兽企业重金招聘Python工程师标准>>> 豆瓣网的robots.txt中有Crawl-delay.Visit-time.Request-rate,好多人搞不清楚这是什么 ...
最新文章
- 福利 | 如何创造可信的AI?人工智能大牛盖瑞·马库斯的11条建议
- string的find和find_first_of的区别
- Java中避免if-else-if:策略模式
- 数据库事务处理差异:可提交读和重复读区别
- phoneGap工程的创建
- 小米 OV 联合起来才不是为了对抗 Google!
- 第一章 Java代码执行流程
- python中avg函数的使用_PostgreSQL avg()函数
- C语言:字符串转为long long --- atoll函数
- asp获取用户坐标,通过微信公众号的js-sdk功能实现获取用户地址坐标
- IMO 双帐号同步API文档
- Simple Contrastive Representation Adversarial Learning for NLP Tasks
- hdu-1052 Tian Ji -- The Horse Racing
- rn源码ios_携程开源RN开发框架CRN
- 两个年月日怎么相减_(excle可以计算日期差值吗)excel表中,两个日期相减如何得出相差年月...
- 张拉拉再获融资,怎么做出一碗资本爱吃的兰州拉面?
- 查看服务器所有文件大小,查看服务器文件夹下内存大小
- 爬虫实现:获取微信好友列表爬取进行好友分析
- 机甲大师s1 python_大疆机甲大师S1,可视化模块编程机器人
- JAVA生成统一社会信用代码和组织机构代码
热门文章
- Ember.js系列文章
- 十款让 Web 前端开发人员更轻松的实用工具
- 建造者模式(Builder Pattern)简单随笔
- asp.net 子页面调用外部 js
- 超级数学计算机,超级计算器+
- CPU缓存一致性动态图
- mysql 技术交流群_二进制部署MySQL(运维技术交流群:926402931,欢迎大家一起来交流。)...
- python写入数据到excel中_Python写入数据到Excel
- python获取按键状态_谁在用 python 弹奏一曲菊花台
- Java学习lesson 09