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

Python調(diào)用JavaScript代碼的幾種方法小結(jié)

 更新時(shí)間:2024年12月31日 11:11:55   作者:燭陰  
日常Web端爬蟲(chóng)過(guò)程中,經(jīng)常會(huì)遇到參數(shù)被加密的場(chǎng)景,因此,我們需要分析網(wǎng)頁(yè)源代碼通過(guò)調(diào)式,一層層剝離出關(guān)鍵的JS代碼,使用Python去執(zhí)行這段代碼,本文將聊聊利用 Python 調(diào)用 JS 的4種方式,需要的朋友可以參考下

1. 使用 PyExecJS 執(zhí)行JavaScript代碼

PyExecJS 是一個(gè)流行的Python庫(kù),它可以用來(lái)在Python中運(yùn)行JavaScript代碼。通過(guò)這個(gè)庫(kù),Python代碼可以調(diào)用JS函數(shù),并返回結(jié)果。

安裝 PyExecJS

pip install PyExecJS

使用示例

import execjs

# 創(chuàng)建一個(gè)執(zhí)行上下文
ctx = execjs.compile("""
    function add(a, b) {
        return a + b;
    }
""")

# 調(diào)用JavaScript中的函數(shù)
result = ctx.call("add", 3, 5)
print(result)  # 輸出 8

2. 使用node-vm模塊執(zhí)行JavaScript

node-vm是Node.js提供的一個(gè)虛擬機(jī)模塊,它允許我們?cè)贘avaScript中創(chuàng)建沙箱環(huán)境運(yùn)行代碼。通過(guò)Python調(diào)用node-vm,可以在一個(gè)受限的環(huán)境中執(zhí)行JavaScript代碼,并返回結(jié)果。這種方法尤其適用于需要在隔離環(huán)境中執(zhí)行JavaScript代碼的場(chǎng)景。

安裝 PyNode

pip install node_vm2

使用示例

from node_vm2 import VM

with VM() as vm:
   vm.run("""
      function add(a, b){
          return a + b;
      }
      
      let sum = add(3, 5);
   """)
   print(vm.run("sum"))

3. 使用 selenium 控制瀏覽器執(zhí)行JavaScript

在某些情況下,你可能需要模擬瀏覽器環(huán)境來(lái)執(zhí)行JavaScript。selenium 是一個(gè)強(qiáng)大的Web自動(dòng)化工具,可以用來(lái)啟動(dòng)瀏覽器,執(zhí)行JavaScript,并獲取瀏覽器頁(yè)面的內(nèi)容。

安裝 selenium

pip install selenium

使用示例

from selenium import webdriver

# 啟動(dòng)瀏覽器
driver = webdriver.Chrome()

# 加載網(wǎng)頁(yè)
driver.get("http://www.baidu.com")

# 執(zhí)行JS代碼
result = driver.execute_script("return 3 + 5;")
print(result)  # 輸出 8

# 關(guān)閉瀏覽器
driver.quit()

4. 使用 subprocess 執(zhí)行 Node.js 腳本

如果你有一個(gè)獨(dú)立的JavaScript文件,并希望通過(guò)Python調(diào)用它,可以使用 subprocess 模塊來(lái)啟動(dòng)一個(gè)Node.js進(jìn)程,執(zhí)行該腳本并獲取結(jié)果。

示例:通過(guò) subprocess 執(zhí)行Node.js腳本

import subprocess

# 定義 Node.js 腳本
js_code = """
function add(a, b){
    return a + b;
}
console.log(add(1, 2));
"""

# 創(chuàng)建 Node.js 腳本文件
with open('script.js', 'w') as f:
    f.write(js_code)

# 執(zhí)行 Node.js 腳本
process = subprocess.Popen(['node', 'script.js'], stdout=subprocess.PIPE)

# 獲取輸出結(jié)果
output, error = process.communicate()

# 打印JS腳本的輸出
print(output.decode())  # 輸出 3

總結(jié)

通過(guò)上述幾種方法,Python開(kāi)發(fā)者可以靈活地在不同場(chǎng)景中調(diào)用JavaScript代碼。希望本文能夠?yàn)槟闾峁┮恍┯杏玫膮⒖?,幫助你更好地?shí)現(xiàn)Python與JavaScript的協(xié)作!

到此這篇關(guān)于Python調(diào)用JavaScript代碼的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)Python調(diào)用JavaScript代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中Django與Echarts的結(jié)合用法圖文詳解

    Python中Django與Echarts的結(jié)合用法圖文詳解

    ECharts是一個(gè)第三方控件,下面這篇文章主要給大家介紹了關(guān)于Python中Django與Echarts的結(jié)合用法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶(hù)驗(yàn)證功能

    Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶(hù)驗(yàn)證功能

    這篇文章主要介紹了怎樣用Python來(lái)實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過(guò)實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識(shí),感興趣的朋友一起來(lái)看看吧
    2022-12-12
  • Python使用Matplotlib庫(kù)創(chuàng)建3D 圖形和交互式圖形詳解

    Python使用Matplotlib庫(kù)創(chuàng)建3D 圖形和交互式圖形詳解

    Matplotlib 是 Python 中最重要的數(shù)據(jù)可視化庫(kù)之一,在本文中,我們將深入研究 Matplotlib 的高級(jí)特性,特別是如何創(chuàng)建 3D 圖形和交互式圖形,需要的朋友可以參考下
    2023-07-07
  • Python 使用matplotlib模塊模擬擲骰子

    Python 使用matplotlib模塊模擬擲骰子

    這篇文章主要介紹了Python 使用matplotlib模塊模擬擲骰子,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包

    Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包

    今天小編就為大家分享一篇關(guān)于Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • 解讀torch.nn.GRU的輸入及輸出示例

    解讀torch.nn.GRU的輸入及輸出示例

    這篇文章主要介紹了解讀torch.nn.GRU的輸入及輸出示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python實(shí)現(xiàn)修改文件創(chuàng)建時(shí)間(支持任意時(shí)間修改)

    Python實(shí)現(xiàn)修改文件創(chuàng)建時(shí)間(支持任意時(shí)間修改)

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)修改文件創(chuàng)建時(shí)間,可以支持任意時(shí)間修改,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-07-07
  • python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法

    python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法

    這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python修改全局變量可以不加global嗎?

    python修改全局變量可以不加global嗎?

    這篇文章主要探討的是python修改全局變量可不可以不加global,我們?cè)诰植孔饔糜騼?nèi)使用全局變量,需要使用global關(guān)鍵字進(jìn)行聲明,不然便不可用,但下面小編就和大家分享可以修改的數(shù)據(jù)類(lèi)型在函數(shù)內(nèi)部做修改操作是不需要聲明global的商務(wù)情況,需要的朋友可以參考下
    2022-02-02
  • keras 權(quán)重保存和權(quán)重載入方式

    keras 權(quán)重保存和權(quán)重載入方式

    這篇文章主要介紹了keras 權(quán)重保存和權(quán)重載入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論

青神县| 昌乐县| 托里县| 钦州市| 葵青区| 北碚区| 新安县| 叶城县| 金秀| 莫力| 永和县| 库尔勒市| 尉氏县| 滕州市| 长沙市| 丽水市| 宁晋县| 左贡县| 宜兰市| 邻水| 广昌县| 吉木萨尔县| 尼玛县| 内乡县| 乌什县| 民县| 彰化市| 崇阳县| 都安| 平阴县| 赞皇县| 兴宁市| 普洱| 天长市| 深水埗区| 邓州市| 腾冲县| 武乡县| 福建省| 淮阳县| 兴业县|