我正在尝试调用python API以获取大约21,500条记录的结果集,其中PageSize限制或默认值为4000条记录。我也不知道页面总数,也没有“ next_url”或“ last_page_url”链接。唯一给出的是结果总数21205,然后我可以将其除以4000的PageSize限制,等于5.30125页。
我在想两种可能的方式,就是我不确定如何将其放入代码中。
首先执行一个while循环,以查看结果集= 4000的PageSize,然后循环遍历另一个页面。
第二个是每个循环,如果页面总数是5.3,则将其舍入到6以获取所有记录并通过page = + 1分页
最后,我需要将所有记录追加到ta pandas数据框,以便可以导出到sql表。
任何帮助将不胜感激。
url = "https://api2.enquiresolutions.com/v3/?Id=XXXX&ListId=161585&PageSize=4000"
auth = { 'Ocp-Apim-Subscription-Key': 'XXX', 'Content-Type': 'application/json'}
params = {'PageNumber': page}
res = requests.get(url=url, headers=auth, params=params).json()
df = pd.DataFrame(res['result'])
total_result= df['total'][0]
total_pages = int(total_result) /4000
properties = json_normalize(df['individuals'],record_path=['properties'],meta=
['casenumber','individualid','type'])
properties['Data'] = properties.label.str.cat(properties.id,sep='_')
properties = properties.drop(['label','id'],axis=1)
pivotprop = properties.pivot(index='individualid', columns='Data', values='value')
data = pivotprop.reset_index()
data.to_sql('crm_Properties',con=engine, if_exists='append'
答案 0 :(得分:1)
您是否正在寻找类似的东西?您只需循环直到结果大小小于4000,然后将数据合并到列表中即可
url = "https://api2.enquiresolutions.com/v3/?Id=XXXX&ListId=161585&PageSize=4000"
auth = { 'Ocp-Apim-Subscription-Key': 'XXX', 'Content-Type': 'application/json'}
page = 0
params = {'PageNumber': page}
pages_remaining = True
full_res = []
while pages_remaining:
res = requests.get(url=url, headers=auth, params=params).json()
full_res.append(res['result'])
page += 4000
params = {'PageNumber' : page}
if not len(res['result']) == 4000:
pages_remaining = False