将原始javascript对象转换为python字典

在遇到非标准Json格式的JavaScript对象时,可以使用demjson库进行转换,尽管大量数据时效率较低。另一种方法是通过execjs执行json.stringify()将JavaScript对象转化为标准Json,然后在Python中处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在抓取某些网站时,抓取到了javascript 对象,不符合Json 格式,不能使用json.loads 该如何处理?

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = {'x':1, 'y':2, 'z':3}

demjson

pip install demjson 安装

import demjson

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = demjson.decode(js_obj)

demjson 一般都可以处理javascript obj,如果数据量特大,速度堪忧。
刚实验的了一下,转换了4w行的json, 用了半个小时。
被逼无奈,只得转换思路,
利用json.stringify 将obj 转换成标准的json 格式再处理。

如果对execjs 的执行效率不满意,可选择 pyv8 这个库
相传 simplejson 的性能比demjson 要好,但demjson的兼容性更强。不过在格式比较规范的情况下,可优先选择性能好的

execjs

pip install PyExecJS 先安装

import execjs
# from
js_obj = '{x:1, y:2, z:3}'

# to
jscode = 'JSON.stringify({})'.format(js_obj)  
json_obj = execjs.eval(jscode)
shop_list = json.loads(json_obj)

关于 js 和 json 互转情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值