欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

PyExecJS 是一個(gè)流行的Python庫,它可以用來在Python中運(yùn)行JavaScript代碼。通過這個(gè)庫,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ī)模塊,它允許我們在JavaScript中創(chuàng)建沙箱環(huán)境運(yùn)行代碼。通過Python調(diào)用node-vm,可以在一個(gè)受限的環(huán)境中執(zhí)行JavaScript代碼,并返回結(jié)果。這種方法尤其適用于需要在隔離環(huán)境中執(zhí)行JavaScript代碼的場景。

安裝 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)境來執(zhí)行JavaScript。selenium 是一個(gè)強(qiáng)大的Web自動(dòng)化工具,可以用來啟動(dòng)瀏覽器,執(zhí)行JavaScript,并獲取瀏覽器頁面的內(nèi)容。

安裝 selenium

pip install selenium

使用示例

from selenium import webdriver

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

# 加載網(wǎng)頁
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文件,并希望通過Python調(diào)用它,可以使用 subprocess 模塊來啟動(dòng)一個(gè)Node.js進(jìn)程,執(zhí)行該腳本并獲取結(jié)果。

示例:通過 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é)

通過上述幾種方法,Python開發(fā)者可以靈活地在不同場景中調(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的None和C++的NULL用法解讀

    Python的None和C++的NULL用法解讀

    這篇文章主要介紹了Python的None和C++的NULL用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件

    python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件

    這篇文章主要介紹了python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 解決Django中checkbox復(fù)選框的傳值問題

    解決Django中checkbox復(fù)選框的傳值問題

    這篇文章主要介紹了解決Django中checkbox復(fù)選框的傳值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python?pip安裝庫時(shí)存在緩存以及清除方法

    Python?pip安裝庫時(shí)存在緩存以及清除方法

    這篇文章主要給大家介紹了關(guān)于Python?pip安裝庫時(shí)存在緩存以及清除方法的相關(guān)資料,我們在安裝Python庫時(shí),是安裝版的話一般都通過?pip?install?xxx?來安裝包,但安裝下載的文件都會(huì)緩存下來,而且一般都在C盤,需要的朋友可以參考下
    2023-08-08
  • Python繪制七段數(shù)碼管實(shí)例代碼

    Python繪制七段數(shù)碼管實(shí)例代碼

    這篇文章主要介紹了Python繪制七段數(shù)碼管實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • pytorch+lstm實(shí)現(xiàn)的pos示例

    pytorch+lstm實(shí)現(xiàn)的pos示例

    今天小編就為大家分享一篇pytorch+lstm實(shí)現(xiàn)的pos示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 使用C語言來擴(kuò)展Python程序和Zope服務(wù)器的教程

    使用C語言來擴(kuò)展Python程序和Zope服務(wù)器的教程

    這篇文章主要介紹了使用C語言來擴(kuò)展Python程序和Zope服務(wù)器的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python的for和break循環(huán)結(jié)構(gòu)中使用else語句的技巧

    Python的for和break循環(huán)結(jié)構(gòu)中使用else語句的技巧

    平時(shí)我們把在if結(jié)構(gòu)中使用else語句當(dāng)作理所當(dāng)然,然而,Python強(qiáng)大的語法糖可以讓else語句在for和while循環(huán)中使用!下面我們就通過例子來看一下Python的for和break循環(huán)結(jié)構(gòu)中使用else語句的技巧
    2016-05-05
  • Python 離線工作環(huán)境搭建的方法步驟

    Python 離線工作環(huán)境搭建的方法步驟

    這篇文章主要介紹了Python 離線工作環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python使用Joblib模塊實(shí)現(xiàn)加快任務(wù)處理速度

    Python使用Joblib模塊實(shí)現(xiàn)加快任務(wù)處理速度

    在Python編程中,處理大規(guī)模數(shù)據(jù)或者進(jìn)行復(fù)雜的計(jì)算任務(wù)時(shí),通常需要考慮如何提高程序的運(yùn)行效率,本文主要介紹了如何使用Joblib模塊來加快任務(wù)處理速度,需要的可以參考下
    2024-03-03

最新評(píng)論