While 循环请求分页 Link

While Loop to Request Pagination Link

我想遍历分页页面,直到到达最后一页。我在页面中搜索分页一词,只要它出现,我就希望我的循环继续。我现在所拥有的不执行 while 循环内的部分。我已经单独测试了条件语句以验证它returns True.

response = requests.get("someapi.api")
data = response.json()

while "pagination" in str(data) == True:
    print "Found string"
    response = requests.get(str(pag_object), timeout=5)
    data = response.json()

您的条件不正确。这就是您想要的:

while "pagination" in str(data):
    # ...

(至少对于条件而言,因为您将 JSON 结构化为响应,所以可能有更简洁的方法来进行此检查,但这不是重点)。


您的原始条件不起作用,因为在幕后,Python 将其解释为

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

这是所有具有 same precedence and chaining of comparison operators.

的比较运算符(包括 in 之类的成员测试)的结果

Chaining 意味着你可以写一个像 x < y < z 这样的普通数学表达式,它意味着我们通常认为它所做的 - y 介于 [=16] 之间=] 和 z。或者换句话说,x < y AND y < z.

但是,应用于您的原始表达式,此链接会导致您看到的令人惊讶的结果。

尽管您单独测试了部分条件,但这种情况还是会发生,因为问题在于这些子表达式的特定组合。如果你是通过分组左边的部分来写的

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

像那样,它实际上会起作用——尽管它是不必要的。在 Python 中只做 if item in sequence 就足够了,而且风格更好。