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

如何用BeautifulSoup爬取维基百科化学元素列表表格并通过Pandas展示

实现步骤

你已经拿到了页面所有表格的集合,接下来按以下步骤操作即可:

步骤1:定位目标表格

你需要从所有表格中筛选出标题为「List of chemical elements」的目标表,维基百科的表格标题一般存储在<caption>标签中,匹配对应文本即可定位:

target_table = None
for table in table_soup:
    caption = table.find('caption')
    # 匹配标题文本,忽略前后空格和换行
    if caption and 'List of chemical elements' in caption.get_text(strip=True):
        target_table = table
        break

步骤2:提取表头信息

从目标表格中提取表头列名,来源是表格的<th>标签:

headers = []
for th in target_table.find_all('th'):
    # 清理文本中的多余空格、换行符
    headers.append(th.get_text(strip=True))

步骤3:提取表格行数据

遍历表格<tbody>下的所有行标签<tr>,提取每行的单元格内容:

row_data = []
for tr in target_table.tbody.find_all('tr'):
    cells = tr.find_all(['td', 'th'])
    # 提取每个单元格的文本并清理
    current_row = [cell.get_text(strip=True) for cell in cells]
    # 过滤长度不匹配的异常行,避免数据错位
    if len(current_row) == len(headers):
        row_data.append(current_row)

步骤4:转换为Pandas DataFrame展示

将提取的表头和行数据组装为DataFrame即可查看:

df = pd.DataFrame(row_data, columns=headers)
# 打印前10行验证结果
print(df.head(10))

快捷实现方式

如果不需要练习BeautifulSoup的基础操作,可以直接用Pandas自带的read_html接口快速匹配目标表格,代码更简洁:

# match参数用于匹配表格标题,返回的是匹配到的表格DataFrame列表
df_list = pd.read_html('https://en.wikipedia.org/wiki/List_of_chemical_elements', match='List of chemical elements')
df = df_list[0]
print(df.head(10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:04