如何用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
相关产品推荐
相关产品推荐

