如何避免导出至Excel时爬取的表格出现重叠?
解决爬取赛事表格无重叠导出至Excel的问题
问题分析
你的代码存在两个核心问题,导致仅最后一个表格被输出且出现重叠:
- 写入Excel的逻辑在循环外部,仅处理了循环结束后的最后一个表格对象
- 固定
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
相关产品推荐
相关产品推荐

