python - 经过身份验证的 API 调用 Python + 分页
问题描述
我正在 Python 中进行经过身份验证的 API 调用 - 并处理分页。如果我分别调用每一页,我可以将 20 页记录中的每一页都拉入并组合成一个数据框,但这显然不是一个非常有效的过程,并且代码变得相当冗长。
我在这里找到了一些指令来检索所有页面中的所有记录——并且 json 输出确认总共有 20 页,约 4900 条记录——但我仍然只是以某种方式获取数据的第 1 页。关于如何通过对 API 的一次调用将每个页面拉入单个数据帧的任何想法?
我引用的链接: Python 使用 GET 从 API 检索多页数据
我的代码:
import requests
import json
import pandas as pd
for page in range (1,20):
url = "https://api.xxx.xxx...json?fields=keywords, source, campaign, per_page=250&date_range=all_time"
headers={"myauthkey"}
response=request.get(url, headers=headers)
print(response.json()) #Shows Page 1, per_page: 25, total_pages: 20, total_records: 4900
data=response.json()
df=pd.json_normalize(data,'records')
df.info() #confirms I've only pulled in 250 records, 1 page of the 20 pages of data.
我已经搜索了网络和这个站点 - 并且找不到有效提取所有 20 页数据的解决方案,除了一个接一个地调用每个页面。我认为一种解决方案可能是循环遍历代码,直到到达最后一页数据,但我不太确定如何设置它,并且认为上面可能会实现这一点 - 也许确实如此,但也许我编写的后续代码不适合拉入所有数据页。
感谢任何指导/建议。谢谢!
解决方案
推荐阅读
- entity-framework - EF Core - 为所有属性定义自定义列映射策略
- angular - 如何在角度2中动态设置宽度和高度
- android - Android 活动生命周期处理错误
- groovy - 从包含 soapui 库的命令提示符编译 Groovy 脚本
- angular - 如何打开和关闭输入复选框(更改)事件值?
- regex - c#文本框十进制精度的正则表达式掩码1最小值1最大值100
- jquery - 如何使用 jquery 添加和删除具有属性的输入元素
- go - 在 Golang 中将切片附加到结构
- prestashop - 特定类别中的 Prestashop 产品
- operating-system - C内核无法打印字符串