减少雅虎蜘蛛的抓取频率的方法

9 sec read

如果雅虎的蜘蛛爬行来得太多,抓取频繁了,会影响百度与、谷歌等蜘蛛爬行的来访次数。百度蜘蛛比较智能,如果他发现你的服务器压力过大的话,那么他爬取的时间就会延迟一段时间,服务器压力减少后还会再来爬取的;谷歌管理员工具里面有个功能就是控制蜘蛛抓取速度的一个功能,另一个是谷歌智能判断。也就是说至少两大搜索引擎是不会不友好的抓取的。

雅虎之前收购了很多家搜索引擎公司,像overture等一大批搜索引擎现在都在雅虎旗下,中国一搜也是雅虎旗下的搜索引擎,这些搜索引擎之间彼此是独立的,所以就导致了大量的重复抓取,而雅虎目前有没有解决这一块问题。

考虑到现在雅虎在国内的市场份额及每天带来的流量非常非常的少。一种方法是屏蔽雅虎蜘蛛的抓取,另外一种方法是降低雅虎蜘蛛的抓取频度。降低雅虎蜘蛛抓取频道的方法是在robots.txt中添加Crawl-delay设置,这个设置使告诉雅虎蜘蛛2次访问之间的间隔,单位是秒。

Crawl-delay的值该设置多大,这个要看网站自身可以承受的负载,假设你希望Slurp每10秒来访问一次,这个设置就是:

User-agent: Yahoo-Slurp
Crawl-delay: 10

可实际上我从网站的日志中看到:Slurp的压力却不止10秒一次。原因是这样:雅虎美国和雅虎中国有2套蜘蛛在运行。

每个蜘蛛都是遵循Crawl-delay间隔的,因此为了进一步降低Slurp压力,希望达到10秒一次请求的频道 实际的Crawl-delay配置就要*2。但是实际上我看到的雅虎的蜘蛛是分布在很多台服务器上的:而多个服务器集群之间也是不相互协调同一网站的抓取频度的。

Yahoo Slurp来源于30多个IP网段,同网段内的蜘蛛协调抓取频度。因此:实际的Slurp设置,需要设置为10*30 = 300秒,才能达到期望的Slurp每10秒访问一次频度。

所以,个人建议在robots.txt中添加

User-agent: Yahoo-Slurp
Crawl-delay: 300 

参考网址:

http://zh.wikipedia.org/zh/Robots.txt

http://ysearchblog.cn/2006/07/yahoo_slurp.html

另外推荐一个robots.txt的校验地址:

http://tool.motoricerca.info/robots-checker.phtml

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

PySpider框架简介及安装

PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
1 min read

Windows安装Docker记录

Docker是一种容器技术,可以将应用和环境等进行打包,形成一个独立的、类似于iOS的APP形式的应用。这个应用可以直接分发到任意一个支持Docker的环境中,通过简单的命令即可启动运行。Docker是一种最流行的容器化实现方案,和虚拟化技术类似,它极大的方便 ...
22 sec read

Windows下安装Tesserocr

在爬虫过程中,经常会遇到各种验证码,大多数验证码是图形验证码,先前的文章中有介绍到破解图形验证码的原理。最简单的破击验证码的方式是使用OCR。
1 min read

Leave a Reply

Your email address will not be published. Required fields are marked *