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

如何使用BeautifulSoup提取data-append-csv属性值并生成pandas DataFrame

爬取data-append-csv属性并生成DataFrame实现

你现有代码已经完成了页面请求、注释块定位的核心步骤,唯一缺失的环节是:找到包裹表格的HTML注释后,没有将注释内的HTML内容解析为可遍历的DOM结构,因此无法提取目标属性。

完整可运行代码

from bs4 import BeautifulSoup, Comment
import pandas as pd
import requests

# 请求目标页面
r = requests.get("https://www.baseball-reference.com/leagues/majors/2021-standard-batting.shtml")
soup = BeautifulSoup(r.content, "html.parser")

# 定位藏在注释中的球员数据表格
target_table = None
for comment in soup.find_all(string=lambda text: isinstance(text, Comment)):
    if 'id="div_players_standard_batting"' in comment:
        target_table = BeautifulSoup(comment, "html.parser")
        break

# 批量提取所有元素的data-append-csv属性值
attr_list = [ele["data-append-csv"] for ele in target_table.find_all(attrs={"data-append-csv": True})]

# 构建符合要求的DataFrame
df = pd.DataFrame(attr_list, columns=["data-append-csv"])

关键逻辑说明

  • 遍历页面所有注释节点,找到包含目标表格div_players_standard_batting的注释块后,直接将注释文本重新传入BeautifulSoup解析,得到可操作的表格DOM对象
  • 用属性筛选器一次性定位所有带data-append-csv属性的元素,批量提取属性值存入列表,效率高于逐行遍历表格
  • 生成DataFrame时直接指定列名为data-append-csv,索引默认从0开始自增,和预期的数据结构完全匹配

运行效果

执行代码后打印df.head()即可看到前几行结果:

indexdata-append-csv
0abbotco01
1abreual01
2abreubr01

代码完全适配给出的依赖版本,不需要额外安装包,在现有JupyterLab环境中可直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:27:21