标点符(钱魏 Way)

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

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

雅虎之前收购了很多家搜索引擎公司,像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

码字很辛苦,转载请注明来自标点符《减少雅虎蜘蛛的抓取频率的方法》

评论