18910140161

Python使用pyexecjs执行JS代码

顺晟科技

2021-06-16 10:58:40

346

近期在采集一个网站的时候遇到一部分的页面是使用射流研究…代码来填充数据的,代码如下:

tr

td width='150px' class='success '案件级别:/td

td colspan='1 '

脚本

var s=GetDict标签([{ ' id ' : ' 4191 c 4842 b 3842749 DD 467655 f 90 B1 fa ',' isNewRecord':false,'备注' : '案件级别,' create date ' : ' 2016-11-29 15:19:34 ',' updateDate ' : ' 2016-11-29 15:19:34 ',' value':'1 ',' label': '一般事件,'类型:'case_grade ','描述' : '案件级别,' sort':1,' parentId':'0'},{ ' id ' : ' 5e 24 FD 12 f 3384 f 38 ab 10898013 Fe 25d 7 ',' isNewRecord':false,' CreateDate ' : ' 2016-11-29 15:19:35 ',' updateDate':'2016-11紧急事件,'类型:'case_grade ','描述' : '案件级别,' sort':2,' parentId':'0'},{ ' id ' : ' f 793 a 78 EB 44 c 405 b 9 FD 007359 df 09579 ',' isNewRecord':false,' CreateDate ' : ' 2016-11-29 15:19:36 ',' UpdateDate ' : ' 2016-29一般重复,'类型:'case_grade ','描述' : '案件级别,' sort':3,' parentId':'0'},{ ' id ' : ' 3f 2605 E3 F6 e 648 f 688 b 79 da 5 f 730 aedb ',' isNewRecord':false,' CreateDate ' : ' 2016-11-29 15:19:34 ',' UpdateDate ' 3360 ' 2016-11-29紧急重复,'类型:'case_grade ','描述' : '案件级别,' sort':4,' parentId':'0'}],1,",true);

文件。书写;

/script

/td

td width='150px' class='success '受理时间:/td

TD col span=' 1 ' 2018-08-05 13:39336022/TD

/tr

对上下文的源码进行分析,找到getDictLabel这个Java脚本语言的函数实现代码如下:

函数getDictLabel(数据、值、默认值){

for(var I=0;idata . lenhei){

var row=data[I];

if (row.value==value){

返回row.label

}

}

返回defaultValue

}

通过一番了解,可以获取到任务描述标签中间的脚本对应的射流研究…代码,通过执行射流研究…代码获取对应的数据。找到了一个计算机编程语言的库pyexecjs可以实现,可以通过如下代码进行安装:

点安装PyExecJS

核心代码如下:

导入execjs

def exec_js_function(js):

# 编译射流研究…代码

ctx=execjs.compile(' ')

函数getDictLabel(数据、值、默认值){

for(var I=0;我数据。长度;i ){

var row=data[I];

if (row.value==value){

返回row.label

}

}

返回defaultValue

}

''')

# 删除一些无关的字符

jscode=js。替换('文档。“写;”, '').替换(',true);', ')').替换(' var s=','')

# 执行代码

返回ctx.eval(jscode)

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航