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()