我正在制作一个小机器人来抓取几个网站。 现在,我正在测试它,我尝试了两种类型的设置:
每3秒约有10个请求 - 知识产权被禁止,所以我说 - 好吧,那太快了。
每3秒发出2次请求 - 30分钟后IP被禁止,1000多个链接被抓取。
那还是太快了吗?我的意思是,如果我收到“我们只是不想被抓取?还是那还是太快了?
感谢。
修改
再次尝试 - 每5秒钟发出2次请求 - 30分钟后,550条链接被禁止。
我会每2秒发出一次请求,但我怀疑会发生同样的情况。我想我必须联系管理员 - 如果我能找到他的话。
答案 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页,同时限制你每天消耗的页数。