Python中PyExecJS(執(zhí)行JS代碼庫)的具體使用
一、pyexecjs庫是什么?
pyexecjs是一個(gè)用Python來執(zhí)行JavaScript代碼的工具庫,該庫支持多種JavaScript運(yùn)行時(shí)環(huán)境,如Node.js、PhantomJS、SlimerJS等,允許開發(fā)者在Python中無縫地調(diào)用和執(zhí)行JavaScript代碼。
二、常見使用場景
在Web爬蟲開發(fā)或者處理JavaScript加密內(nèi)容的場景下,pyexecjs尤為有用,例如當(dāng)網(wǎng)頁中的數(shù)據(jù)是通過JavaScript動(dòng)態(tài)加載或加密時(shí),可以直接在Python程序中執(zhí)行JavaScript函數(shù)來獲取或解密這些數(shù)據(jù)。
二、pyexecjs庫怎么用?
# 安裝 pip install pyexecjs
(1)execjs必學(xué)方法eval
import execjs # 必須掌握的函數(shù)之一 eval(expression) """ 功能:如果你沒有特定的JavaScript文件,而是想直接執(zhí)行給定的JavaScript表達(dá)式代碼時(shí)使用(使用內(nèi)置運(yùn)行時(shí)) 參數(shù):expression是要執(zhí)行的JavaScript字符串表達(dá)式。 返回值:js執(zhí)行結(jié)果。 """ e = execjs.eval('a = new Array(1,2,3)') print(e)
(2)execjs必學(xué)方法complie
import execjs # 必須掌握的函數(shù)之二 compile() """ 功能:用于編譯JavaScript代碼,創(chuàng)建一個(gè)可執(zhí)行的上下文。這個(gè)上下文可以用來執(zhí)行預(yù)編譯好的JavaScript表達(dá)式或函數(shù) 參數(shù):source必填參數(shù),類型為字符串,表示要編譯的JavaScript代碼。 返回值:返回一個(gè)execjs.Context對象實(shí)例,該實(shí)例擁有eval、call等方法,可以用來執(zhí)行JavaScript代碼并獲取結(jié)果 """ # 可以直接編譯一段js片段 js_code1 = """ function add(a, b) { return a + b; } """ # 可以編譯一個(gè)js文件 with open('test.js', 'r') as f: js_code2 = f.read() # 編譯js代碼 ctx1 = execjs.compile(js_code1) result = ctx1.call("add", 1, 2) print(result) ctx2 = execjs.compile(js_code2) result = ctx2.call("add", 1, 2) print(result)
(3)execjs必學(xué)方法call
import execjs # 必須掌握的函數(shù)之二 call(function_name, *args, **kwargs) """ 功能:調(diào)用在JavaScript環(huán)境中定義的函數(shù),并將Python變量作為參數(shù)傳入給這個(gè)JavaScript函數(shù)。 參數(shù): - function_name:字符串類型,表示要調(diào)用的JavaScript函數(shù)名。 - *args:可變位置參數(shù)列表,這些參數(shù)會被轉(zhuǎn)換并作為對應(yīng)的JavaScript函數(shù)的參數(shù)傳入。 - **kwargs:可變關(guān)鍵字參數(shù)字典,這些參數(shù)同樣會被轉(zhuǎn)換后作為JavaScript函數(shù)的命名參數(shù)傳入。 返回值:返回執(zhí)行JavaScript函數(shù)后的結(jié)果。這個(gè)結(jié)果可以是任何JavaScript數(shù)據(jù)類型,在Python端通常會被轉(zhuǎn)換為相應(yīng)的Python類型(例如,JavaScript對象會被轉(zhuǎn)換為Python字典等)。 """ # js代碼片段 js_code = """ function add(a, b) { return a + b; } """ # 創(chuàng)建并編譯js上下文 ctx = execjs.compile(js_code) # 使用call方法來調(diào)用js代碼中的函數(shù) result = ctx.call('add', 10, 2) print(result)
到此這篇關(guān)于Python中PyExecJS(執(zhí)行JS代碼庫)的具體使用的文章就介紹到這了,更多相關(guān)PyExecJS使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
numpy實(shí)現(xiàn)合并多維矩陣、list的擴(kuò)展方法
今天小編就為大家分享一篇numpy實(shí)現(xiàn)合并多維矩陣、list的擴(kuò)展方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python 實(shí)現(xiàn)Serial 與STM32J進(jìn)行串口通訊
今天小編就為大家分享一篇Python 實(shí)現(xiàn)Serial 與STM32J進(jìn)行串口通訊,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python三百行代碼實(shí)現(xiàn)飛機(jī)大戰(zhàn)
飛機(jī)大戰(zhàn)想必大家可能玩過微信的這款小游戲,給我的感覺是這款游戲怎么可以做得這么好呢,操作簡單,容易上手,簡直是“老少皆宜”啊,既然這款游戲這么棒,能否自己動(dòng)手用 Python 來實(shí)現(xiàn)呢?事實(shí)證明是可以的2022-09-09python網(wǎng)絡(luò)爬蟲 Scrapy中selenium用法詳解
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲 Scrapy中selenium用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2019-09-09實(shí)例詳解Python的進(jìn)程,線程和協(xié)程
這篇文章主要為大家詳細(xì)介紹了Python進(jìn)程,線程和協(xié)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Python上下文管理器類和上下文管理器裝飾器contextmanager用法實(shí)例分析
這篇文章主要介紹了Python上下文管理器類和上下文管理器裝飾器contextmanager用法,結(jié)合實(shí)例形式分析了上下文管理器類定義、使用、sqlalchemy實(shí)現(xiàn)數(shù)據(jù)庫的自動(dòng)提交和回滾相關(guān)操作技巧,需要的朋友可以參考下2019-11-11