You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用While循环请求分页链接时循环体未执行

问题出在while循环的条件表达式上!

你遇到的问题根源是条件判断的写法不符合Python的运算规则,导致循环条件实际返回了False,所以循环体根本没执行。

为什么原来的条件不对?

Python里的链式比较(比如a in b == c)会被解析成(a in b) and (b == c),所以你的代码里:

while "pagination" in str(data) == True:

等价于:

while ("pagination" in str(data)) and (str(data) == True):

显然str(data)几乎不可能等于布尔值True(除非你的接口返回的JSON转成字符串后刚好是"True"),所以整个条件会变成True and False,结果是False,循环自然不会跑起来。

而你单独验证的"pagination" in str(data)确实返回True,但加上== True后逻辑完全变了。

修正后的代码

直接去掉多余的== True就可以了(因为"pagination" in str(data)本身就是布尔值,不需要再和True比较):

import requests

response = requests.get("someapi.api")
data = response.json()
while "pagination" in str(data):
    print("Found string")  # 注意Python3里print需要加括号,Python2可以不加
    # 这里要确保pag_object是正确的下一页接口地址,记得补充它的定义逻辑
    response = requests.get(str(pag_object), timeout=5)
    data = response.json()

额外优化建议

把整个data转成字符串来判断其实不够严谨,万一某个字段的值里刚好包含"pagination"字符串,但并不是分页标识的话,会误判。如果你的接口返回的JSON里,pagination是一个顶层键(比如data["pagination"]存在),那直接判断键存在会更准确高效:

while "pagination" in data:

内容的提问来源于stack exchange,提问作者klex52s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:48:43