掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
我們都知道Python可以很輕松的實現(xiàn)某些功能,而且還可以編寫網(wǎng)頁,比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語言,還是第一次聽說,小編也是第一次聽說,于是就跟大家腦補(bǔ)這一知識。

站在用戶的角度思考問題,與客戶深入溝通,找到蛟河網(wǎng)站設(shè)計與蛟河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋蛟河地區(qū)。
是一個可以執(zhí)行JavaScript腳本的Python模塊,可以與網(wǎng)頁上的JavaScript進(jìn)行交互,這樣就能更加精準(zhǔn)的獲取到網(wǎng)頁中的加密內(nèi)容,如果用Python中的網(wǎng)絡(luò)模塊進(jìn)行請求,會無法解密文檔中的加密內(nèi)容,這個時候使用我們的PyExecJS可以很方便到的解密網(wǎng)頁中的加密內(nèi)容,當(dāng)然這得你會Js逆向才可以。不過要想PyExecJS解析JS語句沒毛病,還得整個Js語言解析環(huán)境,這里推薦NodeJS,尷尬。我們來看下PyExecJs的用法:
- import execjs
- aa=execjs.eval("'one|two|three'.split('|')") #執(zhí)行JavaScript代碼,將字符串分割形成數(shù)組
- print(aa)
- e=execjs.compile(''' #編譯一個表達(dá)式
- function add(x,y){
- return x+y;
- }
- ''')
- print(e.call('add',10,20))#調(diào)用編譯好的函數(shù)并且賦值
也可以通過獲取引擎來運行我們的語句,如下:
- print(execjs.get().eval('1+1'))
- print(execjs.get().name)
這里JavaScript的解釋引擎是JScript,我們還可以使用自己指定給力的引擎,比如“Nodejs”。
- import execjs
- import os
- os.environ["EXECJS_RUNTIME"] = "Node"
- print(execjs.get().name)
也可以手動指定引擎,如下:
- js1=execjs.get(execjs.runtime_names.JScript)
- print(js1.eval('1'))
- js2=execjs.get(execjs.runtime_names.Node)
- print(js2.eval('2'))
這個我覺得算是比較好的了,可以說是一個綜合體,它不需要依賴別的環(huán)境,可以獨立運行Js文件,只不過它的運行速度可能會稍微慢一點而已,但是這都不叫事。下面我們來看看它有哪些神器的功能吧。
- import js2py
- aa=js2py.eval_js(
- '''
- var i=0;
- for(var c=1;c<6;c++){
- console.log(c);
- }
- '''
- )
- print(aa)
我們可以把JS文件寫入文件中,以便我們進(jìn)行調(diào)用,如下:
1.js
- function f(aa){
- if(aa>11){
- console.log('OK')
- }else{
- console.log('Fail')
- }
- }
Python文件
- import js2py
- with open('1.js','r') as f:
- aa=js2py.eval_js(f.read())
- print(aa(11))
這里我們以淘寶為主,我想整它的JS腳本文件,如下:
- import execjs
- import requests
- import re
- url = 'https://ai.taobao.com/?pid=mm_26632323_6762370_25910879'
- res=requests.get(url).text
- js=re.findall(r'',res)
- print(js,'\n')
- js1=re.sub(r'eval\(','return(',js[0])
- html="function getLego2WPK(){" + js1 + "};"
- ctx = execjs.compile(html)
- temp = ctx.call('getLego2WPK')
- print(temp)
基于Google的V8引擎打造,遺憾的是目前只支持Python2版本,而且已不再維護(hù),建議Python2的小伙伴可以去試試。
本文主要盤點了3個可以操作JavaScript的Python庫,分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以后玩爬蟲就能更加技高一籌,并且準(zhǔn)確率更高了。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流