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

如何将JupyterLab中爬取的pandas数据表批量导出到Excel

大规模爬取场景下JupyterLab数据表导出Excel最优方案

直接用Python代码导出就行,别折腾Get Data类的GUI功能,后者完全不适配批量爬取场景,没法自动化、操作冗余、可控性还差。

前置说明

你现在用pd.read_html()爬回来的不是单个数据表,是4个DataFrame组成的列表,直接调导出方法肯定报错,先装必要依赖,Jupyter单元格里跑下面的命令就行:

pip install pandas openpyxl

openpyxl是pandas写xlsx文件的默认引擎,不装会直接报依赖错误。

两种常用导出写法

场景1:多表存入同一个Excel的不同工作表

这是单页爬多表最常用的存法,每个爬下来的表单独占一个sheet,数据不会混:

import pandas as pd

# 原有爬取逻辑
table_list = pd.read_html('https://www.basketball-reference.com/international/players/roko-prkacin-1.html')[0:4]

# 改成你自己想存的文件路径
save_path = "球员数据多表.xlsx"

with pd.ExcelWriter(save_path, engine='openpyxl') as writer:
    for idx, df in enumerate(table_list):
        # 可以自定义sheet命名规则,这里按爬取顺序命名
        df.to_excel(writer, sheet_name=f"表{idx+1}", index=False)

要是批量爬上百个球员页面,直接给这段逻辑套个外层循环,每爬完一个页面就按规则写进Excel,全程不用碰鼠标,代码跑完文件就自动生成好了。

场景2:多表合并成一个总表导出

要是需要把所有表拼到一起做分析,先合并再导出就行:

# 纵向拼合所有表,丢掉原表自带的行索引
total_df = pd.concat(table_list, ignore_index=True)
total_df.to_excel("球员数据总表.xlsx", index=False, engine='openpyxl')

不推荐GUI导出的核心原因

  • 批量场景效率极低:导1、2个表手动点选确实快,但爬几十上百页的时候,要重复选变量、选路径、点确认,全是无效重复劳动,而且没法嵌到爬取流水线里,爬一半还要停下来手动导数据,完全做不到自动化。
  • 容易损坏数据格式:GUI预览大表经常卡顿,还会自动篡改数据格式,比如把球员编号、赛季年份这类字段自动转成数值,丢前置0之类的问题非常常见。代码导出可以自己定字段类型、导出范围,不会出这种幺蛾子。
  • 人为失误率高:手动点选操作很容易漏选表、选错保存路径,代码逻辑调通一次之后每次跑结果都一致,不会犯低级错误。

入门容易踩的坑提醒

  • 导出的时候一定要加index=False,不然pandas会把默认生成的行号单独存成一列,平白多一列没用的序号。
  • 爬的数据量特别大的时候,别等所有数据都加载到内存里再导出,每爬十几页就写一次文件,不然内存占满Jupyter直接崩溃,之前爬的内容全白给。
  • 要是需要保留合并单元格、特殊字体这类格式,基于openpyxl也能自定义写入规则,灵活度比GUI高太多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:57:21