2

我有以下从 API 获取数据的代码。这很好用,但是我看到它只返回 25 行。我正在尝试查看如何从 API 调用中提取所有数据并且不限于 25

import requests
import pandas as pd


API_KEY = API_KEY



url = 'https://api.pagerduty.com/incidents/'
headers = {
    'Accept': 'application/vnd.pagerduty+json;version=2',
    'Authorization': 'Token token={token}'.format(token=API_KEY)}
r = requests.get(url, headers=headers)
data = r.content
data_dict = json.loads(data)
data_df = pd.DataFrame(data_dict['incidents'])
4

2 回答 2

3

这是由于 API 响应中的分页。该调用默认返回 25 个事件。如果您传递一个limit参数,您可以获得更多,但最多只能达到 100。如果您循环直到more为 false 并增加每次调用的偏移量,您可以获得所有事件。

请参阅此处的 API 参考limit

于 2020-02-18T11:38:43.930 回答
0

在此处查看文档。

例如,您可以传递查询参数

url = 'https://api.pagerduty.com/incidents?limit=50'

根据文档的最大限制是 100,因此您必须发送多个 GET 请求。如果有数千条记录,请确保您的 python 脚本由于速率限制而在特定时间间隔发送 GET 请求,否则将通过 Too Many Requests 错误。

于 2020-02-18T12:00:57.423 回答