You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何循环调用分页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:

  1. 先安装依赖库:
!pip install gspread oauth2client
  1. 授权并写入数据:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:55:22