Web Scraper:限制在单个域上每分钟/小时的请求数?

时间:2011-10-14 21:07:23

标签: python http mechanize mechanize-python

我正在和图书管理员一起重组他的组织的数字摄影档案。

我已经构建了一个带有MechanizeBeautifulSoup的Python机器人,可以从集合中提取大约7000个结构不合理且温和不正确/不完整的文档。数据将被格式化为可用于纠正它的电子表格。现在我估计总共有7500个HTTP请求来构建搜索字典,然后收集数据,不计算代码中的错误和数据,然后在项目进展时再多计算。

我认为对于我可以多快地发出这些请求存在某种内置限制,即使不存在,我也会让我的机器人延迟与负担过重的Web服务器礼貌地表现出来。我的问题(无可否认,完全准确无法回答)是关于在遇到内置速率限制之前我能以多快的速度发出HTTP请求?

我不想发布我们正在抓取的域名的网址,但如果相关,我会问我的朋友是否可以分享。

注意:我意识到这是不是解决问题的最佳方式(重构/组织数据库),但我们正在建立一个概念验证来说服上级用数据库的副本来信任我的朋友,他将从中导航必要的官僚机构以允许我直接处理数据。

他们还为我们提供了ATOM提要的API,但它需要一个关键字来搜索,并且对于逐步浏览特定集合中的每张照片都没用。

1 个答案:

答案 0 :(得分:4)

HTTP没有内置的速率限制。最常见的Web服务器未配置为开箱即用以限制速率。如果速率限制到位,网站的管理员几乎肯定会把它放在那里,你必须问他们他们配置了什么。

某些搜索引擎尊重robots.txt的非标准扩展程序,建议使用费率限制,因此请检查Crawl-delay中的robots.txt

HTTP确实有两个连接的并发连接限制,但是浏览器已经开始忽略这一点,并且正在努力修改该部分标准,因为它已经过时了。