【发布时间】:2018-06-05 20:09:06
【问题描述】:
我正在尝试遍历分页 URL。我在第一页找到分页 URL,转到它,在第二页找到它,转到它,依此类推,直到最后一页。但是,我得到一个 KeyError,这是由于最后一页没有分页导致的。但是,我认为我的等式会捕捉到这一点,因为我的陈述将是错误的并且循环停止。
response1 = requests.get("api.weather.gov/alerts?limit=100") # request API
data1 = response1.json()
pag_object1 = (data1['pagination']['next']) #find pagination object
while ("pagination" in str(data1)) == True: # while string is found
response1 = requests.get(pag_object1) # use 1st pag object to make new response
data1 = response1.json()
pag_object1 = (data1['pagination']['next']) # redefine pag object
错误:
KeyError: 'pagination'
【问题讨论】:
-
为什么要检查它是否在
str(data1)中而不是检查它是否在data1中?通过将 dict 转换为字符串表示,然后进行子字符串匹配,您将匹配{'something': 'i have no pagination'}之类的内容。但是,data1['pagination']当然会失败。 -
data1 = response1.json()用新的字典覆盖data1... -
@abarnert 是的,但它在第 3 行有效。OP 用循环中的其他内容覆盖
data1。测试来得太晚了。 -
没有看到
data1对象的实际内容,我无法确定发生了什么,但我认为data1的字符串表示在某处包含字符串“分页” , 没有 data1 实际上包含“分页”键。你应该把你的测试改成while "pagination" in data1: -
@bsam 仍然给出同样的错误。
标签: python loops if-statement while-loop python-2.6