下面的代码从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'])
这是由于API响应中的分页所致。该调用默认返回25个事件。如果传递limit
参数,则可以获得更多,但最多只能获得100。如果循环直到more
为false,并在每次调用时增加偏移量,则可以获得所有事件。
关于limit
,请参阅此处的API参考资料
请查看此处的文档。
您可以传递查询参数,例如
url = 'https://api.pagerduty.com/incidents?limit=50'
每个文档的最大限制是100,因此您必须发送多个GET请求。如果有数千条记录,请确保您的python脚本在特定的时间间隔发送GET请求,因为速率限制,否则会出现"请求太多"错误。