太激进的机器人?

时间:2010-01-15 04:21:32

标签: web-services web-crawler

我正在制作一个小机器人来抓取几个网站。 现在,我正在测试它,我尝试了两种类型的设置:

  1. 每3秒约有10个请求 - 知识产权被禁止,所以我说 - 好吧,那太快了。

  2. 每3秒发出2次请求 - 30分钟后IP被禁止,1000多个链接被抓取。

  3. 那还是太快了吗?我的意思是,如果我收到“我们只是不想被抓取?还是那还是太快了?

    感谢。

    修改

    再次尝试 - 每5秒钟发出2次请求 - 30分钟后,550条链接被禁止。

    我会每2秒发出一次请求,但我怀疑会发生同样的情况。我想我必须联系管理员 - 如果我能找到他的话。

3 个答案:

答案 0 :(得分:8)

以下是一些guidelines for web crawler politeness

通常情况下,如果页面下载需要几秒钟的时间,那么在重新下载之前等待至少10x-15x是礼貌的。

同时确保您也尊重robots.txt。

答案 1 :(得分:0)

是。它太快了。

通常,抓取工具保持每分钟1个请求的速率。

老实说这是一个低爬行率。但几分钟后你就可以拥有一个URL队列(一长串:))。您可以旋转此列表,直到下一轮转到特定网址。

如果您可以选择使用某种分布式架构(多个节点具有不同的网络连接,甚至HyperV或VM),您可能会想到更高的速度。网格中的不同主机可以更有效地获取内容。

答案 2 :(得分:0)

要考虑的最佳考虑因素之一是网站所有者。正如其他人提到的那样,robots.txt文件是网站执行此操作的标准。

简而言之,您在robots.txt中有3种方法可用于限制请求速度。

Crawl-delay:#,一个整数,表示请求之间等待的秒数。

请求率:#/#,表示有多少页面的分子和表示每秒多少的分母。即:每3秒1/3 = 1页。

访问时间:#### - ####,两个由连字符分隔的4位数字,表示您应该抓取其网站的时间(HH:MM GMT)。

鉴于这些建议/请求,您可能会发现某些网站在他们的robots.txt中没有任何这些内容,其中您可以控制它们。我建议保持合理的速度,每秒至少1页,同时限制你每天消耗的页数。