pyv8使用总结

在使用python爬虫的过程中,难免遇到要加载原网站的js脚本并执行。但是python本身无法解析js脚本。

不过python这么猛的语言,当然设置了很多方法来执行js脚本。其中一个比较简单的方法是使用pyv8模块。

用pip下载pyv8模块,也可以百度搜索安装包(使用于windows平台)

然后就是使用。

首先导入包:

import PyV8

然后创建一个jsContext对象并进入:

ctxt = PyV8.JSContext()
ctxt.__enter__()

然后eval一下想要执行的js的代码,或者包含你需要的js代码的源文件:

ctxt.eval(jsFile)

接下来就可以使用这个ctxt来执行js脚本了。主要有两种用途:

  1、调用js中的方法:

  

#把strEnc绑定到js中的strEnc方法
strEnc = ctxt.locals.strEnc
#执行strEnc方法,传入python的参数:params,_deskey,用python接受返回值
str = strEnc(params, _deskey, '', '')

 2、调用js中的变量:

#Url是python中的变量
'''
  例如js文件:
      var a=****;
      var b=****;
      var url=**
  我想动态的取得a和b的值,可以令url='a',得到a的值,url=’b'取得b的值
  这里就不能用locals来寻找,如果用ctxt.locals(Url),则会匹配到js文件中的Url返回给你
    
'''
downLoadUrl = str(ctxt.eval(Url))

这两个方法基本够用,等以后用到其他的方法再来补充。

原文地址:https://www.cnblogs.com/superxuezhazha/p/6648719.html