最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中PyExecJS(執(zhí)行JS代碼庫(kù))的具體使用

 更新時(shí)間:2024年02月29日 08:35:07   作者:小oo呆  
pyexecjs是一個(gè)用Python來(lái)執(zhí)行JavaScript代碼的工具庫(kù),本文主要介紹了Python中PyExecJS(執(zhí)行JS代碼庫(kù))的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

一、pyexecjs庫(kù)是什么?

pyexecjs是一個(gè)用Python來(lái)執(zhí)行JavaScript代碼的工具庫(kù),該庫(kù)支持多種JavaScript運(yùn)行時(shí)環(huán)境,如Node.js、PhantomJS、SlimerJS等,允許開發(fā)者在Python中無(wú)縫地調(diào)用和執(zhí)行JavaScript代碼。

二、常見使用場(chǎng)景

在Web爬蟲開發(fā)或者處理JavaScript加密內(nèi)容的場(chǎng)景下,pyexecjs尤為有用,例如當(dāng)網(wǎng)頁(yè)中的數(shù)據(jù)是通過(guò)JavaScript動(dòng)態(tài)加載或加密時(shí),可以直接在Python程序中執(zhí)行JavaScript函數(shù)來(lái)獲取或解密這些數(shù)據(jù)。

二、pyexecjs庫(kù)怎么用?

# 安裝
pip install pyexecjs

(1)execjs必學(xué)方法eval

import execjs

# 必須掌握的函數(shù)之一 eval(expression)
"""
功能:如果你沒(méi)有特定的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è)上下文可以用來(lái)執(zhí)行預(yù)編譯好的JavaScript表達(dá)式或函數(shù)
參數(shù):source必填參數(shù),類型為字符串,表示要編譯的JavaScript代碼。
返回值:返回一個(gè)execjs.Context對(duì)象實(shí)例,該實(shí)例擁有eval、call等方法,可以用來(lái)執(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ù)會(huì)被轉(zhuǎn)換并作為對(duì)應(yīng)的JavaScript函數(shù)的參數(shù)傳入。
    - **kwargs:可變關(guān)鍵字參數(shù)字典,這些參數(shù)同樣會(huì)被轉(zhuǎn)換后作為JavaScript函數(shù)的命名參數(shù)傳入。
返回值:返回執(zhí)行JavaScript函數(shù)后的結(jié)果。這個(gè)結(jié)果可以是任何JavaScript數(shù)據(jù)類型,在Python端通常會(huì)被轉(zhuǎn)換為相應(yīng)的Python類型(例如,JavaScript對(duì)象會(huì)被轉(zhuǎn)換為Python字典等)。
"""
# js代碼片段
js_code = """

function add(a, b) {
    return a + b;
}
"""

# 創(chuàng)建并編譯js上下文
ctx = execjs.compile(js_code)

# 使用call方法來(lái)調(diào)用js代碼中的函數(shù)
result = ctx.call('add', 10, 2)
print(result)

到此這篇關(guān)于Python中PyExecJS(執(zhí)行JS代碼庫(kù))的具體使用的文章就介紹到這了,更多相關(guān)PyExecJS使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python實(shí)現(xiàn)監(jiān)控內(nèi)存使用情況和代碼執(zhí)行時(shí)間

    Python實(shí)現(xiàn)監(jiān)控內(nèi)存使用情況和代碼執(zhí)行時(shí)間

    我的代碼的哪些部分運(yùn)行時(shí)間最長(zhǎng)、內(nèi)存最多?我怎樣才能找到需要改進(jìn)的地方?在開發(fā)過(guò)程中,我很確定我們大多數(shù)人都會(huì)想知道這一點(diǎn)。本文總結(jié)了一些方法來(lái)監(jiān)控?Python?代碼的時(shí)間和內(nèi)存使用情況,希望對(duì)大家有所幫助
    2023-01-01
  • python中模塊的__all__屬性詳解

    python中模塊的__all__屬性詳解

    這篇文章主要介紹了python中模塊的__all__屬性詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Python永久配置國(guó)內(nèi)鏡像源安裝再也不用擔(dān)心卡頓

    Python永久配置國(guó)內(nèi)鏡像源安裝再也不用擔(dān)心卡頓

    這篇文章主要為大家介紹了Python如何永久配置國(guó)內(nèi)鏡像源,從此安裝再也不用擔(dān)心卡頓,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • python實(shí)現(xiàn)拉格朗日插值及作圖

    python實(shí)現(xiàn)拉格朗日插值及作圖

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)拉格朗日插值及作圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python巧用delattr實(shí)現(xiàn)提升代碼可擴(kuò)展性與打包效率

    Python巧用delattr實(shí)現(xiàn)提升代碼可擴(kuò)展性與打包效率

    在Python的動(dòng)態(tài)世界里,我們習(xí)慣了用setattr來(lái)動(dòng)態(tài)賦予對(duì)象屬性,用getattr來(lái)探查未知,但你是否曾正視過(guò)delattr,下面小編就和大家詳細(xì)講講delattr的具體使用吧
    2026-01-01
  • tensorflow中的數(shù)據(jù)類型dtype用法說(shuō)明

    tensorflow中的數(shù)據(jù)類型dtype用法說(shuō)明

    這篇文章主要介紹了tensorflow中的數(shù)據(jù)類型dtype用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法

    今天小編就為大家分享一篇關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python如何批量讀取.mat文件并保存成.npy

    python如何批量讀取.mat文件并保存成.npy

    這篇文章主要介紹了python如何批量讀取.mat文件并保存成.npy問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python?timeit使用小結(jié)

    Python?timeit使用小結(jié)

    本文主要介紹了Python?timeit使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python中生成13位時(shí)間戳的常見方法

    Python中生成13位時(shí)間戳的常見方法

    這篇文章主要為大家詳細(xì)介紹了Python中生成13位時(shí)間戳的常見方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-11-11

最新評(píng)論

峨边| 新昌县| 杭锦后旗| 中方县| 天长市| 平山县| 禹州市| 马公市| 涪陵区| 临猗县| 阿坝县| 大同县| 新丰县| 墨脱县| 普陀区| 凌云县| 台湾省| 塔河县| 霍邱县| 枝江市| 柳江县| 榕江县| 牙克石市| 武义县| 潮安县| 阳江市| 广州市| 剑河县| 南江县| 武隆县| 永川市| 佛山市| 泰安市| 吉林市| 长阳| 沁源县| 区。| 浮梁县| 高雄县| 比如县| 菏泽市|