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

如何避免导出至Excel时爬取的表格出现重叠?

解决爬取赛事表格无重叠导出至Excel的问题

问题分析

你的代码存在两个核心问题,导致仅最后一个表格被输出且出现重叠:

  1. 写入Excel的逻辑在循环外部,仅处理了循环结束后的最后一个表格对象
  2. 固定startrow=1,所有表格都从同一行开始写入,完全覆盖之前的内容

修改后的代码

import pandas as pd
import requests

url_trainer = "https://racing.hkjc.com/racing/information/english/racing/Draw.aspx"

# 获取页面中所有目标表格
list_of_df = pd.read_html(requests.get(url_trainer, headers={'user-agent':'Mozilla/5.0'}).text, attrs={'class':'table_bd'})

# 初始化表格起始写入行(Excel行号从1开始)
start_row = 1

# 写入Excel,使用mode='w'创建新文件(若需追加到已有文件可改为mode='a',但需额外处理起始行)
with pd.ExcelWriter("jockeyclub.xlsx", engine="openpyxl", mode='w') as writer:
    for table in list_of_df:
        # 将当前表格写入指定位置
        table.to_excel(writer, sheet_name="Draw", index=True, startrow=start_row)
        # 更新起始行:当前表格行数 + 2行空行(用于分隔不同赛事表格)
        start_row += len(table) + 2

关键修改说明

  • 将to_excel操作移入循环内部,确保每个爬取到的表格都被写入Excel
  • 新增start_row变量动态控制每个表格的起始位置,每次写完一个表格后,将起始行移至当前表格末尾+空行的位置,彻底避免重叠
  • 使用mode='w'创建全新文件,避免原有文件内容干扰导出结果;如果需要追加到已有文件,需先读取已有工作表的最后行号来初始化start_row

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:10:58