在使用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))
這兩個方法基本夠用,等以后用到其他的方法再來補充。
