在抓取某些网站时,抓取到了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)