Python使用BeautifulSoup爬取HTML表格转指定格式字典
BeautifulSoup解析HTML表格生成指定字典实现方案
核心逻辑
- 定位目标表格标签,遍历表格内所有行标签
<tr> - 过滤掉仅包含表头单元格
<th>的表头行,仅处理存在数据单元格<td>的数据行 - 逐行提取所有
<td>的文本内容,每行第一个单元格文本作为字典键,剩余单元格文本组成的列表作为对应键的值
完整实现代码
from bs4 import BeautifulSoup # 初始化BeautifulSoup实例,fichier_html为你传入的HTML源码字符串/文件内容 soup = BeautifulSoup(fichier_html, "html.parser") result = {} # 遍历目标表格下的所有行 for tr in soup.find("table").find_all("tr"): # 提取当前行所有td单元格 tds = tr.find_all("td") # 无td单元格判定为表头行,直接跳过 if not tds: continue # 提取每个td的文本,strip()用于去除前后多余空白、换行 cell_content = [td.text.strip() for td in tds] # 按要求组装字典 result[cell_content[0]] = cell_content[1:]
输出效果
运行代码后result变量的输出和预期格式完全一致:
{ 'Valeur A': ['Valeur B', 'Valeur C', 'Valeur D', 'Valeur E'], 'Valeur F': ['Valeur G', 'Valeur H', 'Valeur I', 'Valeur J'], 'Valeur K': ['Valeur L', 'Valeur M', 'Valeur N', 'Valeur O'] }
适配说明
- 如果待爬取页面存在多个表格,可修改
soup.find("table")为带属性筛选的定位逻辑,例如soup.find("table", class_="target-table")匹配指定class的表格 - 若不需要自动去除单元格文本前后的空白字符,删除
.strip()即可 - 逻辑自动识别跳过表头行,无需手动指定行索引,适配表头行数变动的场景
注意:如果单元格内存在嵌套标签,
td.text会自动提取所有嵌套标签内的文本,符合常规爬取需求。
内容的提问来源于stack exchange,提问作者chpe1
相关产品推荐
相关产品推荐

