如何将指定BeautifulSoup HTML对象转换为目标Pandas DataFrame
实现方案
不要直接提取整段文本做切片,按HTML标签结构逐字段提取即可,鲁棒性更强,不会受字段文本长度变化影响。
- 核心逻辑:遍历目标div下的所有直接子div节点,每个子节点的首个文本内容为列名,子节点内
<a>/<p>标签的文本为对应字段值,组装为字典后直接转Pandas DataFrame即可。 - 完整代码如下:
import pandas as pd # 你已持有的divlist为<div class="companyProfileHeader">对应的BeautifulSoup对象 data_dict = {} # 仅遍历第一层子div,不递归查找深层节点 for sub_div in divlist.find_all("div", recursive=False): # 提取列名:取当前div下直接挂载的文本,去除首尾空白 column = sub_div.find(string=True, recursive=False).strip() # 提取字段值:当前div下的a或p标签存储了对应业务值 value = sub_div.find(["a", "p"]).text.strip() # 可选:员工数字段转为整数类型 if column == "Employees": value = int(value) data_dict[column] = value # 转换为DataFrame df = pd.DataFrame([data_dict])
- 执行后打印
df即可得到预期结构:
Industry Sector Employees Equity Type 0 Life Sciences Tools & Services Healthcare 17000 ORD
注意:不要依赖整段text的固定长度做切片,只要后续页面字段文本长度发生变化,硬切片逻辑就会直接报错,按标签结构提取的方式适配性更强。
内容的提问来源于stack exchange,提问作者Lopez
相关产品推荐
相关产品推荐

