使用BeautifulSoup解析HTML表格如何按指定字段导出结构化JSON
调整后可直接运行的代码
import json from bs4 import BeautifulSoup # 假设你已经完成了页面解析得到soup对象 find_table = soup.find("table", id="viewAllSeriesTable") # 按行遍历tbody下的所有tr tbody_rows = find_table.select("tbody tr") fields = ["id", "seriesName", "clientName", "Brand"] data = [] for row in tbody_rows: # 提取当前行所有td的文本 tds = [td.get_text(strip=True) for td in row.find_all("td")] # 组装成字典,id转为整数类型 row_dict = dict(zip(fields, tds)) row_dict["id"] = int(row_dict["id"]) data.append(row_dict) # 写入JSON文件,indent=2格式化输出更易读 with open("data_file.json", "w", encoding="utf-8") as write_file: json.dump(data, write_file, indent=2, ensure_ascii=False)
核心修改点说明
- 原代码直接提取所有td生成一维列表,没有按行分组,修改后先遍历tbody的每一行tr,保证每行数据对应一条完整记录
- 提前定义和表头顺序一致的字段列表,通过
zip方法把td内容和字段一一对应生成结构化字典 - 对id字段做了整数类型转换,匹配你期望的输出格式
- 写入文件时加了
encoding="utf-8"避免中文乱码,indent=2输出格式化的JSON,可读性更高
运行后输出的data_file.json格式会是:
[ { "id": 9127, "seriesName": "a", "clientName": "A", "Brand": "B" } ]
如果有多行数据会自动在列表中追加对应字典对象,符合常规结构化JSON存储规范。
内容的提问来源于stack exchange,提问作者user16707466
相关产品推荐
相关产品推荐

