Python 执行 JS 代码 —— PyExecJS

      大家会遇到网页请求数据是经过 JS 处理的,特别是模拟登录时可能有加密请求。而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间。因此不要着急使用 Selenium 暴力解决,毕竟 Selenium 严重拖慢爬虫效率,我们可以尝试使用一些第三方库,来直接执行前端 JS 代码得到处理过后的结果

PyExecJS

     这个库主要是将 JS 代码运行在本地的 JS 环境中,优点是我们有多种 JS 环境的选择,官方推荐了 PyV8、Node.js、PhantomJS、Nashorn 四种,当然缺点是必须安装一种环境导致不是很轻量,而且调用时有一个启动环境过程,还是有明显缓慢的。

一、Node.js安装配置

(1) JS 环境,推荐安装Node.js ,Node.js官方网站,安装方便,最新版也整合了V8引擎

(2)安装后,将Node.js添加路径到系统环境变量

(3)在cmd输入node -v,如下图,即配置环境变量成功。 

二、Pycharm配置 

(1) 在Settings | Plugins里边,搜索NodeJS,然后点击下载;

 

(2) 在Settings | Languages & Frameworks| Node.js and NPM ,查看配置当前安装的node.js的路径。 

 三、PyExecJS安装

pip install PyExecJS

 四、Pycharm运行Js代码

(1) js文件

 (2)调用js文件中的函数

 code: 

import execjs

def my(setence):
    #读取js文件
    with open('show.js','r',encoding='utf-8') as f:
        reader=f.read()
    #加载编译读取内容
    loader=execjs.compile(reader)
    #调用js文件中的方法
    r =loader.call('say',setence)
    #返回结果
    return r


if __name__ == '__main__':
     #调用方法
     print(my('What can you do any Kung Fu,John?'))

(3)运行效果

 

 

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值