Мне нужно извлечь все данные из API с Python, но каждая страница содержит только 100 результатов, и я не могу определить, как использовать цикл WHILE для возврата каждой страницы, чтобы я мог поместить все данные в один фрейм данных,API настраивается в формате URL: "https://www.api.url.com/sessions?apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31&page=1&country=US"
И страница, и страна являются необязательными параметрами.
Я попытался изменить URL-адрес API, чтобы" page = 1: 160 "и"page = 1-160 ", но он вернул только первую страницу.
Затем я попытался добавить параметр страницы в виде отдельного оператора, который возвращает ошибку имени;
IN:
response = requests.get("https://www.api.url.com/sessions?
apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31",
params={'page': page}))
data = response.json()
df=pd.DataFrame(data['Sessions'])
pd.options.display.max_rows = 2000
OUT:
NameError name 'page' is not defined
Затем я попытался запустить тот же код, но начиная с формата API, указанного владельцем, но получил очень похожее сообщение об ошибке;
IN:
r_sessions = requests.get("https://www.api.url.com/sessions?
apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31").json()
num_pages=r_sessions['last_page']
for page in range(2, num_pages + 1):
r_sessions = requests.get("https://www.api.url.com/sessions?
apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31", params={'page': page}).json()
print(r_sessions['page'])
OUT:
KeyError 'last_page'
Я ожидал получить фрейм данных, содержащий все результаты API, даже если они были разбиты на страницы. Однако я могу получить только максимумодна страница на вызов API. Я знаю, что мне нужно это зациклить, и я не знаю как, поскольку я не знаю, сколько там страниц.