在使用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))
这两个方法基本够用,等以后用到其他的方法再来补充。