2011-03-09 85 views
2

我一直在网上爬虫阅读,并得到一个充满考虑的列表,但有一个问题,我还没有找到任何讨论。robots.txt的蜘蛛间隔

应该多久的robots.txt要取回任何给定的网站?

我的情况是,对于任何特定的网站,一个非常缓慢的爬行用了一天,也许100页。 可以说一个网站添加了其他页面链接到的新部分(/仅限人/ /)。同时在robots.txt中添加相应的行。更新robots.txt之前,蜘蛛可能会找到本节的链接。

有趣的是,如何写下问题给出了解决方案。 当提出我的问题时,我想到了一个解决方案。

中的robots.txt很少能得到更新,就像每天一次。 但是,所有新发现的链接都应该保留在队列中,直到robots.txt的下一次更新。 robots.txt更新后,所有待传递的链接现在都可以被抓取。

有没有其他想法或实践经验呢?

回答

4

所有大型Web爬虫缓存robots.txt一段时间。有一天是很常见的,而且在过去我已经看到一次只要一个星期。我们的抓取工具的最长缓存时间为24小时。实际上,除了我们经常抓取的网站外,通常情况下这个数字会小于这个数字。

如果您持有等待将来版本的robots.txt的链接,那么您会为抓取添加一个人为的24小时延迟。也就是说,如果您今天抓取了我的网站,那么在再次下载我的robots.txt文件之前,您必须将所有这些链接保留多达24小时,并确认当时允许抓取的链接已被允许。你可能会错误,因为你是对的。比方说,会发生以下情况:

2011-03-08 06:00:00 - You download my robots.txt 
2011-03-08 08:00:00 - You crawl the /humans-only/ directory on my site 
2011-03-08 22:00:00 - I change my robots.txt to restrict crawlers from accessing /humans-only/ 
2011-03-09 06:30:00 - You download my robots.txt and throw out the /humans-only/ links. 

在你爬的时候,你都可以访问该目录中,所以不存在与您发布的链接没有问题。

当您下载robots.txt以确定您是否被允许在当时读取这些文件时,您可以使用Web服务器返回的上次修改日期,但返回上次修改日期时存在大量服务器。一些很大的比例(我不记得它是什么)总是返回当前日期/时间作为最后修改日期,因为它们的所有内容(包括robots.txt)都是在访问时生成的。

而且,并称限制你的机器人意味着你将不得不再次访问他们的robots.txt文件,即使你不打算抓取他们的网站。否则,链接将在缓存中衰减。你提出的技术引发了很多你无法妥善处理的问题。您最好的选择是使用您手边的信息进行操作。

大多数网站经营者了解关于robots.txt缓存,并会寻找其他方式,如果你的机器人击中24小时的robots.txt变化的内其网站上受限制的目录。当然,前提是您没有阅读robots.txt,然后继续爬行受限制的页面。在对这些行为提出质疑的少数人中,对发生事件的简单解释通常就足够了。

只要你是什么你的履带正在做开了,你提供的网站运营商与您联系的方式,大部分误解很容易被纠正。有几个 - 很少 - 会指责你做各种恶劣活动的人。与他们最好的打赌是道歉造成问题,然后阻止你的机器人访问他们的网站。

+0

如果它的地址出现在robots.txt中,您是不是应该删除页面的缓存?就好像页面会返回404一样? 当然我对历史不感兴趣,所以这里可能有所不同。 – hultqvist 2011-03-10 08:23:28