python - Python - 遍历每个页面以获取所有记录
问题描述
我想从 API 端点检索所有记录(总共 50,000 条)。端点每页最多只返回 1000 条记录。这是获取记录的功能。
def get_products(token,page_number):
url = "https://example.com/manager/nexus?page={}&limit={}".format(page_number,1000)
header = {
"Authorization": "Bearer {}".format(token)
}
response = requests.get(url, headers=header)
product_results = response.json()
total_list = []
for result in product_results['Data']:
date = result['date']
price = result['price']
name = result['name']
total_list.append((date,price,name))
columns = ['date', 'price', 'name']
df = pd.DataFrame(total_list, columns=columns)
results = json.dumps(total_list)
return df, results
如何在不硬编码页码的情况下遍历每一页直到最终记录?目前,我正在硬编码前 2 页的页码,以获得 2000 条记录作为测试。
for page_number in np.arange(1,3):
token = get_token()
product_df,product_json = get_products(token,page_number)
if page_number==1:
product_all=product_df
else:
product_all=pd.concat([product_all,product_df])
print(product_all)
谢谢你。
解决方案
我不知道端点的行为。假设当页码大于最后一个页码时,您将得到一个空列表。如果是这种情况,您可以检查结果是否为空。
page_number = 1
token = get_token()
product_df, product_json = get_products(token,page_number)
product_all=product_df
while product_df.size:
page_number = page_number + 1
token = get_token()
product_df,product_json = get_products(token,page_number)
product_all=pd.concat([product_all,product_df])
print(product_all)
如果您确定每页最多有 1000 条记录,则可以检查结果计数是否小于 1000 并停止循环。
推荐阅读
- python - 如何在烧瓶应用程序中显示 pythoon scipt 数据
- javascript - 从“插入”查询返回插入的值
- python-3.x - 如何将大写更改为小写,反之亦然?
- matlab - Matlab中唯一函数的输出
- javascript - 一旦我们使用reactjs单击提交按钮,就无法显示helperText?
- wagtail - 自定义 Wagtail 报告的导出文件名?
- istio - Istio 入口网关:域名和端口转发
- android-studio - Google 路线 API 计费
- sql-server - T-SQL根据数量复制行
- node.js - 如何使用 xml2js 向数组元素添加属性?