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

如何采集NHL分页API数据并合并写入同一Excel工作表不覆盖内容

实现方案

核心逻辑

  • 拆分API的固定参数与分页参数:该接口通过start参数控制分页偏移量,limit参数控制单页返回条数,我们将limit设为接口支持的最大值100,减少请求次数
  • 首次请求获取总数据量,自动计算需要请求的总页数
  • 循环拉取所有分页数据,合并为完整数据集后统一写入Excel,避免多次写入覆盖原有内容

完整可运行代码

import requests
import pandas as pd
import time

# 接口固定参数部分,移除了原链接中多余的符号
base_url = "https://api.nhle.com/stats/rest/en/team/daysbetweengames?isAggregate=false&isGame=true&sort=%5B%7B%22property%22:%22teamFullName%22,%22direction%22:%22ASC%22%7D,%7B%22property%22:%22daysRest%22,%22direction%22:%22DESC%22%7D,%7B%22property%22:%22teamId%22,%22direction%22:%22ASC%22%7D%5D&factCayenneExp=gamesPlayed%3E=1&cayenneExp=gameDate%3C=%222021-11-30%2023:59:59%22%20and%20gameDate%3E=%222021-10-12%22%20and%20gameTypeId=2"
# 单页最大返回条数,按接口限制设为100
page_size = 100
# 存储所有分页的数据
all_data = []

# 第一次请求获取总数据量
first_resp = requests.get(f"{base_url}&start=0&limit={page_size}")
first_resp.raise_for_status() # 检查请求是否出错
first_data = first_resp.json()
total = first_data['total']
# 加入第一页的数据
all_data.extend(first_data['data'])
print(f"总数据量:{total}条,开始分页拉取")

# 计算剩余需要拉取的页数
for start in range(page_size, total, page_size):
    # 构造分页请求链接
    req_url = f"{base_url}&start={start}&limit={page_size}"
    resp = requests.get(req_url)
    resp.raise_for_status()
    page_data = resp.json()
    all_data.extend(page_data['data'])
    print(f"已拉取到第{start//page_size + 1}页,累计{len(all_data)}条数据")
    # 加1秒延时避免请求频率过高被接口拦截
    time.sleep(1)

# 合并所有数据为DataFrame
full_df = pd.DataFrame(all_data)
# 写入Excel,所有数据存入同一个工作表
full_df.to_excel('Master File.xlsx', sheet_name='Info', index=False)
print(f"所有数据已写入完成,共{len(full_df)}条")

补充说明

如果需要后续增量写入不覆盖已有数据,可以先读取本地已有的Excel数据,和新拉取的数据做去重后再写入,示例逻辑如下:

# 读取本地已有数据
old_df = pd.read_excel('Master File.xlsx', sheet_name='Info')
# 合并新旧数据,按唯一字段(比如gameId+teamId)去重
combined_df = pd.concat([old_df, full_df]).drop_duplicates(subset=['gameId', 'teamId'], keep='last')
# 重新写入
combined_df.to_excel('Master File.xlsx', sheet_name='Info', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:08