首页 > 解决方案 > 经过身份验证的 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 页数据的解决方案,除了一个接一个地调用每个页面。我认为一种解决方案可能是循环遍历代码,直到到达最后一页数据,但我不太确定如何设置它,并且认为上面可能会实现这一点 - 也许确实如此,但也许我编写的后续代码不适合拉入所有数据页。

感谢任何指导/建议。谢谢!

标签: pythonapipagination

解决方案


推荐阅读