当默认设置为500时,如何获得API的最大结果

2024-10-04 01:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

此API返回的默认结果为500https://environment.data.gov.uk/flood-monitoring/id/floodAreas

我希望使用Python获得最大数量的结果,但我只能将_限制设置为更高的数量。我该怎么去找呢

其他信息如下: https://environment.data.gov.uk/flood-monitoring/doc/reference#flood-areas

使用此选项可获得更高的限制 https://environment.data.gov.uk/flood-monitoring/id/floodAreas/?_limit=100000


Tags: httpsapi信息iddata数量docenvironment
1条回答
网友
1楼 · 发布于 2024-10-04 01:35:00

我通常会发送多个请求,每个结果“页面”对应一个请求,并逐渐增加偏移量。e、 g.你会做一些类似的事情:

import requests

url = 'https://environment.data.gov.uk/flood-monitoring/id/floodAreas'
offset = 0
result = []

while True:
  res = requests.get(url, params={'_offset': offset})
  res.raise_for_status()

  data = res.json()
  items = data['items']
  if not items:
    break

  result.extend(items)
  offset += len(items)

他们的API如此工作有多种原因,一个常见的原因是试图减少拒绝服务攻击的影响。攻击者很容易在限制上再加上几个零,从而导致服务器执行的工作量成倍增加。相反,一旦您从该服务返回了几百个以上的对象,那么对HTTP请求进行分页的额外工作将始终只占执行的总工作的一小部分,并保持客户端“诚实”

相关问题 更多 >