Python - выборка данных из API - PullRequest
2 голосов
/ 18 февраля 2020

У меня есть код ниже, который выбирает данные из 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'])

Ответы [ 2 ]

3 голосов
/ 18 февраля 2020

Это связано с разбиением на страницы в ответе API. По умолчанию для вызова возвращается 25 инцидентов. Если вы передадите параметр limit, вы можете получить больше, но только до 100. Если вы l oop, пока more не станет ложным, и увеличите смещение при каждом вызове, вы можете получить все инциденты.

См. Здесь Справочник по API для limit

0 голосов
/ 18 февраля 2020

Проверьте документацию здесь .

Вы можете передать параметр запроса, например,

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

Максимальный лимит по документам равен 100, поэтому вам придется отправлять несколько запросов GET. Если есть тысячи записей, убедитесь, что ваш скрипт python отправляет GET-запрос через указанный интервал времени c из-за ограничения скорости, иначе произойдет ошибка Too Many Requests.

...