微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何运行 while 循环来运行 REST API 调用,直到 Python 中不再返回结果

如何解决如何运行 while 循环来运行 REST API 调用,直到 Python 中不再返回结果

我正在编写一个简短的 Python 程序来使用 Rest API 调用请求一个 JSON 文件。 API 将我限制为相对较小的结果集(50 个左右),我需要检索数千个结果集。我已经实现了一个 while 循环来实现这一点,它运行得相当好,但我无法弄清楚“继续 while 循环”的逻辑,直到没有更多的结果可以检索。现在我已经实现了一个硬数值,但想用一个条件替换它,如果没有更多结果返回,它会停止循环。 'offset' 字段是 API 强制您使用的参数,用于指定您想要的 50 组结果。我的逻辑看起来像...

import requests
import json
from time import sleep

url = "https://someurl"
offsetValue = 0

ParaMS = {'limit':50,'offset':offsetValue}



headers = {
   "Accept": "application/json"
}

while offsetValue <= 1000:
   response = requests.request(
      "GET",url,headers=headers,params = ParaMS
   )
   testfile =  open("testfile.txt","a")
   testfile.write(json.dumps(json.loads(response.text),sort_keys=True,indent=4,separators=(",",": ")))
   testfile.close()
   offsetValue = offsetValue + 1
   sleep(1)

所以我想将控制while循环的条件从固定数字更改为检查getRequest的结果集是否为空。希望这是有道理的。

解决方法

您的循环可以是 while true。每次获取后,将有效负载转换为 dict。如果结果数为 0,则 break

根据 API 的工作方式,可能会有其他信号表明没有更多内容可获取,例如一些 HTTP 错误,不一定是结果计数 - 您必须为此发现 API 的逻辑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。