如何使用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()即可看到前几行结果:
| index | data-append-csv |
|---|---|
| 0 | abbotco01 |
| 1 | abreual01 |
| 2 | abreubr01 |
代码完全适配给出的依赖版本,不需要额外安装包,在现有JupyterLab环境中可直接运行。
内容的提问来源于stack exchange,提问作者Clutch_Dude
相关产品推荐
相关产品推荐

