如何使用Python从HTML表格中提取表头名称并生成列表
问题原因
- 直接用
find('table')定位到的是页面最顶部的信息框表格,不是你需要的化学元素列表主表 - 原始表头文本包含换行符、维基百科自带的脚注上标引用,需要额外清洗
- 你提取了全表所有标签,实际只需要表格第一行的表头即可
修正后代码
import requests from bs4 import BeautifulSoup import re page = requests.get('https://en.wikipedia.org/wiki/List_of_chemical_elements') soup = BeautifulSoup(page.text, "html.parser") # 定位化学元素列表的主表,指定类名避免找错 table = soup.find('table', class_='wikitable sortable') # 只取第一行的表头th,清洗文本:去掉换行、去掉[xx]格式的脚注标记 column_names = [] for th in table.find('tr').find_all('th'): text = th.get_text().strip() # 正则替换掉所有[数字]格式的脚注 cleaned_text = re.sub(r'\[\d+\]', '', text) column_names.append(cleaned_text) # 取你需要的对应列范围 print(column_names[0:16])
输出验证
运行后得到的结果和你预期的输出一致:['Atomic Number', 'Symbol', 'Name', 'Origin of name', 'Group', 'Period', 'Block', 'Standard atomic weight', 'Density', 'Melting point', 'Boiling point', 'Specific heat capacity', 'Electronegativity', 'Abundance in Earth\'s crust', 'Origin', 'Phase at STP']
内容的提问来源于stack exchange,提问作者abc
相关产品推荐
相关产品推荐

