【问题标题】:Scheduling "scraping" of data from REST APIs调度从 REST API 中“抓取”数据
【发布时间】:2026-01-23 17:25:01
【问题描述】:

我从中提取数据的一个数据源通过 REST API 以 JSON 响应的形式提供访问。太好了,因为我得到的数据已经结构化,也就是说,抓取和解析非结构化 HTML 文档的痛苦更少。

但是,它们通过速率限制来限制 HTTP 流量:每分钟/每小时/每月/IP/用户电子邮件的请求数。

当我使用 Scrapy 抓取 HTML 文档时,我可以轻松配置每秒请求数、后续请求之间的延迟、线程数等。我将其称为“加载策略”。它在 Scrapy 的底层工作方式是,我生成一些 Scrapy 放入队列的 HTTP 请求,并根据给定的“加载策略”处理来自队列的请求。

REST API 有类似的东西吗?

为了提供一些上下文,我使用从数据源 Swagger 定义生成的 Python REST 客户端。客户端在后台使用 urllib3。客户端提供了一种以异步方式执行请求的方法和一种配置线程池的方法,但看起来我需要花点时间来配置它。我正在寻找开箱即用的解决方案。

【问题讨论】:

标签: python


【解决方案1】:

使用生成的客户端,您将能够向相应的 REST API 发出请求。但是,您需要构建自己的代码/逻辑来在请求和请求排队之间插入延迟。 Scrapy 为您提供的许多便利都需要您自己实现。或者您需要找到可以为您提供此功能的工具/包。

【讨论】:

  • 对。我想在这里寻求工具推荐是一个坏主意/地方。 softwarerecs.stackexchange.com 会更合适吗?
  • 你或许可以以某种方式在 Scrapy 中硬塞现有的 Swagger 客户端,但看起来询问好的包/工具将是一个很好的下一步。