溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

可以操作JavaScript的Python庫(kù)有哪些

發(fā)布時(shí)間:2021-09-30 10:37:47 來(lái)源:億速云 閱讀:167 作者:柒染 欄目:web開(kāi)發(fā)

這篇文章給大家介紹可以操作JavaScript的Python庫(kù)有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

前言

我們都知道Python可以很輕松的實(shí)現(xiàn)某些功能,而且還可以編寫(xiě)網(wǎng)頁(yè),比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語(yǔ)言,還是第一次聽(tīng)說(shuō),小編也是第一次聽(tīng)說(shuō),于是就跟大家腦補(bǔ)這一知識(shí)。

一、PyExecJS

是一個(gè)可以執(zhí)行JavaScript腳本的Python模塊,可以與網(wǎng)頁(yè)上的JavaScript進(jìn)行交互,這樣就能更加精準(zhǔn)的獲取到網(wǎng)頁(yè)中的加密內(nèi)容,如果用Python中的網(wǎng)絡(luò)模塊進(jìn)行請(qǐng)求,會(huì)無(wú)法解密文檔中的加密內(nèi)容,這個(gè)時(shí)候使用我們的PyExecJS可以很方便到的解密網(wǎng)頁(yè)中的加密內(nèi)容,當(dāng)然這得你會(huì)Js逆向才可以。不過(guò)要想PyExecJS解析JS語(yǔ)句沒(méi)毛病,還得整個(gè)Js語(yǔ)言解析環(huán)境,這里推薦NodeJS,尷尬。我們來(lái)看下PyExecJs的用法:

1.常規(guī)操作

import execjs aa=execjs.eval("'one|two|three'.split('|')") #執(zhí)行JavaScript代碼,將字符串分割形成數(shù)組 print(aa)   e=execjs.compile('''     #編譯一個(gè)表達(dá)式 function add(x,y){   return x+y; } ''') print(e.call('add',10,20))#調(diào)用編譯好的函數(shù)并且賦值

可以操作JavaScript的Python庫(kù)有哪些

也可以通過(guò)獲取引擎來(lái)運(yùn)行我們的語(yǔ)句,如下:

print(execjs.get().eval('1+1'))

2.查看解釋引擎

print(execjs.get().name)

可以操作JavaScript的Python庫(kù)有哪些

這里JavaScript的解釋引擎是JScript,我們還可以使用自己指定給力的引擎,比如“Nodejs”。

3.指定引擎

import execjs import os os.environ["EXECJS_RUNTIME"] = "Node" print(execjs.get().name)

可以操作JavaScript的Python庫(kù)有哪些

也可以手動(dòng)指定引擎,如下:

js1=execjs.get(execjs.runtime_names.JScript) print(js1.eval('1'))  js2=execjs.get(execjs.runtime_names.Node) print(js2.eval('2'))

可以操作JavaScript的Python庫(kù)有哪些

二、Js2Py

這個(gè)我覺(jué)得算是比較好的了,可以說(shuō)是一個(gè)綜合體,它不需要依賴(lài)別的環(huán)境,可以獨(dú)立運(yùn)行Js文件,只不過(guò)它的運(yùn)行速度可能會(huì)稍微慢一點(diǎn)而已,但是這都不叫事。下面我們來(lái)看看它有哪些神器的功能吧。

1.常規(guī)操作,必須的

可以操作JavaScript的Python庫(kù)有哪些

2.循環(huán)遍歷

import js2py aa=js2py.eval_js( ''' var i=0; for(var c=1;c<6;c++){ console.log(c); }  ''' ) print(aa)

可以操作JavaScript的Python庫(kù)有哪些

3.讀取Js文件

我們可以把JS文件寫(xiě)入文件中,以便我們進(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))

可以操作JavaScript的Python庫(kù)有哪些

4.爬取網(wǎng)站數(shù)據(jù)

這里我們以淘寶為主,我想整它的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'<script>(.*?)</script>',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)

可以操作JavaScript的Python庫(kù)有哪些

三、PyV8

基于Google的V8引擎打造,遺憾的是目前只支持Python2版本,而且已不再維護(hù),建議Python2的小伙伴可以去試試。

關(guān)于可以操作JavaScript的Python庫(kù)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI