,,Python使用execjs执行包含中文参数的JavaScript

,,Python使用execjs执行包含中文参数的JavaScript

在爬虫的开发过程中,经常需要模拟JS。简单的或者通用的也可以用Python模拟或者找相应的第三方库,但是复杂的可能很难实现。下面这篇文章主要介绍Python使用execjs执行带中文参数的JavaScript的相关信息。有需要的可以参考一下。

抓取了一段包含数据的JavaScript代码:

进口re

导入请求

标题={

用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/86 . 0 . 4240 . 198 Safari/537.36 ',

accept': 'text/html,application/xhtml xml,application/xml。q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,应用/签约-交换;v=b3q=0.9 ',

}

res=requests.get(

https://www . kuaikanmanhua . com/web/comic/100868/',

标题=标题

)

script=re.findall(

脚本窗口。__nuxt__=([^]);/script ',res.text)[0]。替换(' \\u002F ','/')

脚本

结果:

这段代码可以直接在浏览器中执行得到相应的JSON数据,那么我们如何用python执行这段代码得到JS数据呢?答案是用execjs

安装:

pip安装PyExecJS

但是如果此时在安装了Nodejs的windows上直接执行代码:

导入execjs

execjs.eval(脚本)

将报告以下错误:

UnicodeDecodeError错误:“gbk”编解码器无法解码位置447处的字节0xa4:非法的多字节序列

此时,我们需要将execjs的环境重新指定为JScript:

导入操作系统

OS . environ[' exec js _ RUNTIME ']=' JScript '

再一次可以得到一个顺利的结果。

如果我们真的需要使用本地nodejs环境来执行JavaScript,我们需要修改execjs的源代码:

导入操作系统

OS . environ[' exec js _ RUNTIME ']=' Node '

print(execjs.get()。姓名)

Node.js

在execjs安装目录中找到_external_runtime.py文件:

重启程序并再次执行以获得结果:

execjs的调用函数或读取变量示例:

导入execjs

ctx=execjs.compile(' ')

函数add(x,y) {

返回x y;

}

v=add(3,4);

''')

print(ctx.call('add ',1,2),ctx.eval('v '))

3 7

文件lib \ site-packages \ execjs \ runtime _ names . py可以看到exec js支持的JavaScript环境:

PyV8='PyV8 '

Node='Node '

JavaScriptCore='JavaScriptCore '

蜘蛛猴='蜘蛛猴'

JScript='JScript '

幻影='幻影'

苗条的人

纳斯霍恩

总结

关于Python使用execjs执行带中文参数的JavaScript的这篇文章到此为止。关于execjs用中文参数执行JavaScript的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: