While 循环中的 KeyError
KeyError in While Loop
我正在尝试循环分页 URLs。我在第一页找到分页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'
我认为问题出在下面,您在再次检查 while 循环的条件之前重新定义了 pag_object1。
我认为正在发生的事情:
- data1 是倒数第二页,仍然包含 'pagination' 对象
- pag_object1 可以赋值,因为 data1 包含一个名为 'pagination'
的键
- while 条件将计算为 True
最后一个循环:
- data1 在最后一页并且不包含键 'pagination' 但是您仍然在检查 while 循环
的条件之前尝试分配 pag_object1
这应该可以解决问题:
response1 = requests.get("api.weather.gov/alerts?limit=100") # request API
data1 = response1.json()
# while the pagination string is in the keys
while "pagination" in data1:
# assign the pagination object
pag_object1 = (data1['pagination']['next'])
# use pag_object1 to create a new request for the next page
response1 = requests.get(pag_object1)
# assign the new page to the data1 object
data1 = response1.json()
我正在尝试循环分页 URLs。我在第一页找到分页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'
我认为问题出在下面,您在再次检查 while 循环的条件之前重新定义了 pag_object1。
我认为正在发生的事情:
- data1 是倒数第二页,仍然包含 'pagination' 对象
- pag_object1 可以赋值,因为 data1 包含一个名为 'pagination' 的键
- while 条件将计算为 True
最后一个循环:
- data1 在最后一页并且不包含键 'pagination' 但是您仍然在检查 while 循环 的条件之前尝试分配 pag_object1
这应该可以解决问题:
response1 = requests.get("api.weather.gov/alerts?limit=100") # request API
data1 = response1.json()
# while the pagination string is in the keys
while "pagination" in data1:
# assign the pagination object
pag_object1 = (data1['pagination']['next'])
# use pag_object1 to create a new request for the next page
response1 = requests.get(pag_object1)
# assign the new page to the data1 object
data1 = response1.json()