You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BeautifulSoup4解析标签中类似JS对象格式的属性值?

你提取到的data-prop属性值属于非标准JSON的JS对象字面量,不需要写复杂正则解析,以下是更简洁高效的实现方案:

方案1:使用Python标准库ast.literal_eval(最推荐,无额外依赖)

ast.literal_eval是Python内置的安全字面量解析工具,仅会解析字典、列表、字符串这类基础数据结构,不会执行任意代码,安全性和解析效率都远高于自定义正则,而且刚好适配你给出的属性格式:

from ast import literal_eval
from bs4 import BeautifulSoup

soup = BeautifulSoup(data,'html.parser')
class_element = soup.find("div", class_="class1")
# 注意:Python变量名不能用连字符,原代码的data-props需要改为下划线命名
data_prop_str = class_element['data-prop']
# 一行代码完成解析,直接得到Python字典
data_prop = literal_eval(data_prop_str)

# 后续可直接通过键取值
print(data_prop['personName']) # 输出 Claudia
print(data_prop['personCode']) # 输出 123456

如果属性值里存在JS特有的小写字面量true/false/null,只需做简单的预处理即可适配:

data_prop_str = data_prop_str.replace("true", "True").replace("false", "False").replace("null", "None")
data_prop = literal_eval(data_prop_str)

方案2:使用宽松JSON解析库(适配复杂格式)

如果遇到包含尾逗号、注释等更特殊的JS对象格式,可以使用demjson3这类第三方宽松解析库,无需手动预处理:

  1. 安装依赖:
    pip install demjson3
  2. 解析代码:
import demjson3

data_prop = demjson3.decode(data_prop_str)

内容的提问来源于stack exchange,提问作者fazineroso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:48:03