我需要从与Python的API把所有的数据,但每个页面只包含100个结果,我不能确定如何使用循环返回每一页,所以我可以把所有的数据在一个单一的数据帧。 API被设置在url格式, “https://www.api.url.com/sessions?apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31&page=1&country=US”
页面和国家/地区都是可选参数。
我尝试更改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调用一个页面。我知道我需要循环它,我不知道如何,因为我不知道有多少网页有。
答案 0 :(得分:0)
没有页面错误的正确代码:
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
r_sessions = requests.get("https://www.api.url.com/sessions?apikey=xxxx&apisecret=xxx&fromdate=2018-11-11&todate=2019-01-31").json()
for i in r_sessions:
print(i)