如何解决在while循环中使用“下一页”
我正在从API端点检索数据,该端点仅允许我一次最多检索100个数据点。响应中有一个“下一页”字段,我可以通过将下一页URL插回到GET请求中来检索下一个100个数据点,依此类推(总共约有70,000个)。如何通过自动将“下一页” URL插回到get请求中来利用for循环或while循环来检索端点中的所有可用数据?
这是我正在使用的代码。问题是当我执行While循环时,由于它在第一个响应实例上运行,因此每次都会得到相同的响应。我想不出如何调整它的解决方案。
response = requests.get(url + '/api/named_users?limit=100',headers=headers)
users = []
resp_json = response.json()
users.append(resp_json)
while resp_json.get('next_page') != '':
response = s.get(resp_json.get('next_page'),headers = headers)
resp_json = response.json()
users.append(resp_json)
总结:我想在每个响应中使用“下一页” URL,以获取接下来的100个数据点,并每次将其附加到列表中,直到提取所有数据为止。
解决方法
您可以使用递归函数来做到这一点。 例如这样的东西:
response = requests.get(url + '/api/named_users?limit=100',headers=headers)
users = []
resp_json = response.json()
users.append(resp_json)
users = next_page(resp_json.get('next_page'),users)
def next_page(url,users):
if url != '':
response = s.get(url,headers=headers)
resp_json = response.json()
users.append(resp_json)
if resp_json.get('next_page') != '':
return next_page(resp_json.get('next_page'),users)
return users
但是,一般来说,API会返回总数的项目,每个请求返回的项目数。因此,您可以轻松地对所有项目进行分页和循环。 这是一些伪代码:
for i in range(items_returned__per_request,total_number_of_items/items_returned__per_request):
response = s.get(resp_json.get('next_page'),headers=headers)
resp_json = response.json()
users.append(resp_json)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。