【发布时间】:2019-08-23 03:49:39
【问题描述】:
我正在编写从 API 获取记录的代码,并且该 API 在其上实现了分页,最多允许 100 条记录。所以我必须循环100的倍数。目前,我的代码比较从 offset 100 到 101,102,103 等的总记录和循环。我希望它循环 100 个(如 100,200,300),并在偏移量大于总记录时立即停止。我不知道该怎么做,我有部分代码递增 1 而不是 100,并且在需要时不会停止。谁能帮我解决这个问题。
import pandas as pd
from pandas.io.json import json_normalize
#Token for Authorization
API_ACCESS_KEY = 'Token'
Accept='application/xml'
#Query Details that is passed in the URL
since = '2018-01-01'
until = '2018-02-01'
limit = '100'
offset = '0'
total = 'true'
def get():
url_address = "https://mywebsite/web?offset="+str('0')
headers = {
'Authorization': 'token={0}'.format(API_ACCESS_KEY),
'Accept': Accept,
}
querystring = {"since":since,"until":until, "limit":limit, "total":total}
# find out total number of pages
r = requests.get(url=url_address, headers=headers, params=querystring).json()
total_record = int(r['total'])
print("Total record: " +str(total_record))
# results will be appended to this list
all_items = []
# loop through all offset and return JSON object
for offset in range(0, total_record):
url = "https://mywebsite/web?offset="+str(offset)
response = requests.get(url=url, headers=headers, params=querystring).json()
all_items.append(response)
offset = offset + 100
print(offset)
# prettify JSON
data = json.dumps(all_items, sort_keys=True, indent=4)
return data
print(get())
目前当我打印我看到的偏移量
总记录:345
100,
101,
102、
预期:
总记录:345
100,
200,
300
停止循环!
【问题讨论】:
标签: python api pagination