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

如何用Curl实现API基于游标的分页循环获取全量数据并合并存储

用CMD脚本实现API分页数据全量导出方案

前提确认

首先你需要确认目标API的分页规则:

  • 单次返回100条,通常API会支持分页参数,比如offset(偏移量,每次加100)+limit=100,或者page(页码,每次加1)+page_size=100。先手动测试一下,比如在浏览器里访问https://你的API地址?offset=0&limit=100,看是否返回前100条,再试offset=100看是否返回下一页。

一键执行的CMD批处理脚本

因为你没有编码经验,直接用Windows批处理(.bat文件)就能实现循环调用和数据合并,步骤如下:

  1. 新建一个文本文件,把下面的代码复制进去,然后把后缀改成.bat(比如fetch_all_data.bat)
  2. 替换代码里的配置参数(API地址、授权信息、代理等)
  3. 双击运行这个bat文件,就能自动把所有页的数据合并到一个JSON文件里
@echo off
setlocal enabledelayedexpansion

:: -------------------------- 配置参数 --------------------------
set "API_URL=https://你的实际API地址"
:: 注意:这里的Basic后面是你把「用户名:密码」转成Base64编码后的字符串
set "AUTH=Basic 你的Base64编码授权字符串"
:: 不需要代理就把下面这行删掉
set "PROXY=http://你的代理地址:端口"
:: 最终保存的全量数据文件名
set "OUTPUT_FILE=all_api_data.json"
:: -------------------------- 配置结束 --------------------------

set "offset=0"
set "page_size=100"

:: 初始化输出文件为一个空的JSON数组
echo [] > %OUTPUT_FILE%

:loop
echo 正在获取第 %offset% 条开始的数据...

:: 根据是否有代理,调用对应的curl命令
if defined PROXY (
    curl -X GET "%API_URL%?offset=%offset%&limit=%page_size%" -H "accept: application/json" -H "authorization: %AUTH%" --proxy "%PROXY%" -o temp_page.json -s
) else (
    curl -X GET "%API_URL%?offset=%offset%&limit=%page_size%" -H "accept: application/json" -H "authorization: %AUTH%" -o temp_page.json -s
)

:: 检查当前页是否有数据(空JSON文件大小通常≤2)
for %%f in (temp_page.json) do set "filesize=%%~zf"
if !filesize! leq 2 goto finish

:: 处理当前页数据,合并到总文件
:: 读取临时文件内容,去掉首尾的[]
set /p "page_data="<temp_page.json
set "page_data=!page_data:~1,-1!"

:: 如果不是第一页,先给总文件末尾加个逗号
if %offset% gtr 0 (
    powershell -Command "(Get-Content %OUTPUT_FILE%) -replace '\]$', ',' | Set-Content %OUTPUT_FILE%"
)

:: 把当前页数据追加进去,再补全JSON数组的结尾
powershell -Command "(Get-Content %OUTPUT_FILE%) + '!page_data!' | Set-Content %OUTPUT_FILE%"
powershell -Command "(Get-Content %OUTPUT_FILE%) -replace '\]$', ']' | Set-Content %OUTPUT_FILE%"

:: 偏移量加100,继续下一页
set /a offset+=page_size
goto loop

:finish
:: 清理临时文件
del temp_page.json
echo 全量数据获取完成!已保存到 %OUTPUT_FILE%
endlocal

针对不同分页规则的调整

如果你的API用的是page参数而不是offset:

  • 把脚本里的offset改成page,初始值设为1
  • 把curl命令里的?offset=%offset%&limit=%page_size%改成?page=%page%&page_size=%page_size%
  • 循环里的set /a offset+=page_size改成set /a page+=1

注意事项

  • 先单独测试curl命令:把配置好的curl命令复制到CMD里运行,确认能正常返回JSON数据,再运行bat脚本
  • Base64编码转换:把「用户名:密码」(比如admin:123456)转成Base64字符串,可以用Windows自带的命令:在CMD里运行echo admin:123456 | certutil -encode -f - temp.b64 && findstr /v /c:- temp.b64 && del temp.b64,输出的就是编码后的字符串
  • 如果API返回的分页信息里有总条数,也可以计算循环次数(比如总条数500,就循环5次),但上面的脚本会自动判断什么时候没有数据,更省心

内容的提问来源于stack exchange,提问作者KIDA02

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:03:36