处理 Python 分页 API 请求中的最后一页
Handling final page in Python paginated API request
我正在请求 Microsoft 的 Graph API,我在其中使用以下函数来请求多个页面。我正在尝试请求所有页面,合并 json 文件,最后将它们写入 pandas
数据框。
v = "v1.0"
r = "/users?$filter=userType eq 'Member'&$select=displayName,givenName,jobTitle,mail,department&$top=200"
def query(v, r):
all_records = []
url = uri.format(v=v, r=r)
while True:
if not url:
break
result = requests.get(url, headers=headers)
if result.status_code == 200:
json_data = json.loads(result.text)
all_records = all_records + json_data["value"]
url = json_data["@odata.nextLink"]
return all_records
while-loop
遍历所有页面,但是当我 运行 函数时出现错误:
KeyError: '@odata.nextLink'
我假设这是因为循环到达了最后一页,因此找不到 '@odata.nextLink'
。但是我该如何处理呢?
你在做
url = json_data["@odata.nextLink"]
这表明 json_data
是 dict
,因此您应该可以使用 .get
方法,当找不到密钥时 returns 默认值(None
默认情况下),请尝试执行以下操作并写下它是否正常工作:
url = json_data.get("@odata.nextLink")
if url is None:
print("nextLink not found")
else:
print("nextLink found")
我正在请求 Microsoft 的 Graph API,我在其中使用以下函数来请求多个页面。我正在尝试请求所有页面,合并 json 文件,最后将它们写入 pandas
数据框。
v = "v1.0"
r = "/users?$filter=userType eq 'Member'&$select=displayName,givenName,jobTitle,mail,department&$top=200"
def query(v, r):
all_records = []
url = uri.format(v=v, r=r)
while True:
if not url:
break
result = requests.get(url, headers=headers)
if result.status_code == 200:
json_data = json.loads(result.text)
all_records = all_records + json_data["value"]
url = json_data["@odata.nextLink"]
return all_records
while-loop
遍历所有页面,但是当我 运行 函数时出现错误:
KeyError: '@odata.nextLink'
我假设这是因为循环到达了最后一页,因此找不到 '@odata.nextLink'
。但是我该如何处理呢?
你在做
url = json_data["@odata.nextLink"]
这表明 json_data
是 dict
,因此您应该可以使用 .get
方法,当找不到密钥时 returns 默认值(None
默认情况下),请尝试执行以下操作并写下它是否正常工作:
url = json_data.get("@odata.nextLink")
if url is None:
print("nextLink not found")
else:
print("nextLink found")