如何循环调用分页API获取全量数据并导入Google Sheet?
实现API分页循环获取数据并导入Google Sheet
一、重构API请求实现分页循环
先把payload里的data字段从字符串改成字典,方便动态修改page参数。从第1页开始循环请求,每次判断是否还有更多数据,直到获取全部分页内容。
示例代码(Python/Colab通用):
import requests import json url = "urlsample" # 基础请求参数,将data改为字典格式便于修改page值 base_payload = { 'version': '2.0', 'appId': '1234', 'businessId': '7532', 'accessToken': 'Dk4qVfiJmdg9QnowtDHoXTvFAsuQpbI' } # 初始化分页控制参数 current_page = 1 per_page = 50 all_data = [] while True: # 构造当前页的data参数 data_param = { "page": current_page, "icpp": per_page, "parentId": 0, "status": "New" } # 将data字典转为字符串,放入请求payload base_payload['data'] = json.dumps(data_param) try: response = requests.request("POST", url, data=base_payload, files=[]) response.raise_for_status() # 捕获HTTP请求错误 result = response.json() # 根据API实际返回结构提取分页数据,这里假设数据在'data'键下,需自行调整 page_data = result.get('data', []) if not page_data: # 当前页无数据,终止循环 break all_data.extend(page_data) # 如果当前页返回的数据条数小于每页设定值,说明是最后一页 if len(page_data) < per_page: break current_page += 1 except Exception as e: print(f"请求第{current_page}页失败: {str(e)}") break print(f"共获取到{len(all_data)}条数据")
二、导入数据到Google Sheet(Colab环境)
在Colab中可以通过gspread库授权后直接将数据写入Google Sheet:
- 先安装依赖库:
!pip install gspread oauth2client
- 授权并写入数据:
import gspread from oauth2client.client import GoogleCredentials # 授权访问Google Sheet gc = gspread.authorize(GoogleCredentials.get_application_default()) # 打开目标Sheet,替换为你的Sheet名称 sheet = gc.open("你的目标Sheet名称").sheet1 # 清空现有数据(可选操作) sheet.clear() # 写入表头(如果数据是字典列表,提取第一个元素的键作为表头) if all_data: headers = list(all_data[0].keys()) sheet.append_row(headers) # 将字典列表转为二维列表,批量写入数据 rows = [list(item.values()) for item in all_data] sheet.append_rows(rows) print("数据已成功导入Google Sheet")
注意事项
- 需根据API实际返回的JSON结构,调整
page_data = result.get('data', [])中的键名,确保正确提取每页数据。 - 如果API返回总页数或总条数,可直接根据总页数循环(比如
total_pages = result.get('totalPages'),再循环for page in range(1, total_pages+1)),比判断数据长度更准确。 - 注意API的请求频率限制,必要时添加
time.sleep(1)这类延迟,避免被封禁。
内容的提问来源于stack exchange,提问作者Ka ka Nguyen
相关产品推荐
相关产品推荐

