保持循环,直到API响应不再包含特定密钥

2024-09-30 02:17:44 发布

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

我正在从一个API中检索一个JSON响应,该API包含一个“下一个”字段,如果还有另一个结果页面(该页面一次只显示20个结果)。我希望循环继续跟随这些“下一个”URL(在每个页面上添加值),直到“下一个”键不在响应中

我尝试了两种不同的方法,但要么有效,只抓取第一页,要么出现如下错误:JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这是到目前为止的代码,希望我已经解释了我要实现的目标

totalOrderCount = 0
totalOrderAmount = 0

response = session.get(url+'/ordertransactions').json()

while 'next' in response:
    nextUrl = response['next']
    for i in response['orders']:
        totalOrderCount = totalOrderCount + 1
        totalOrderAmount = totalOrderAmount + i['amount']
    response = session.get(nextUrl).json() # Grab next page of results and perform the above actions again
else:
    for i in response['orders']:
        totalOrderCount = totalOrderCount + 1
        totalOrderAmount = totalOrderAmount + i['amount']

print(totalOrderCount)
print(totalOrderAmount)

谢谢你的帮助


Tags: inapijsonforgetresponsesession页面
2条回答

解决了它,问题是URL

API请求使用以下域: https://adminapi.prod-environment.com

而下一个URL字符串是: https://admin.prod-environment.com

.com之后的一切都是一样的,所以我不得不简单地去掉url的开头,一切都很好

错误消息告诉您响应不是JSON,因为它无法理解它。通常的原因是页面出错并返回HTML

我建议你试试

print (session.get(nextUrl).content[:1000])

查看请求正在查看的内容

相关问题 更多 >

    热门问题