亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python執(zhí)行JS代碼的三種方式

 更新時間:2024年01月09日 10:44:25   作者:銀古_1427  
以前的數(shù)據(jù)靠買,現(xiàn)在的數(shù)據(jù)靠爬”,越來越多的學者通過網(wǎng)絡爬蟲來獲取數(shù)據(jù),但是做爬蟲的人都知道,現(xiàn)在的很多網(wǎng)站都在和我們斗智斗勇,防護普遍越來越好,破解JS加密只是第一步,之后就是如何在我們的Python代碼中直接執(zhí)行JS,下面介紹一下幾種Python中執(zhí)行JS代碼的方法

1. 使用 js2py

基本操作:

import js2py
 
 
# 執(zhí)行單行js語句
js2py.eval_js("console.log(abcd)")
>>> abcd
 
# 執(zhí)行js函數(shù)
add = js2py.eval_js("function add(a, b) {return a + b};")
print(add(1,2))
>>> 3
 
# 另一種方式
js = js2py.EvalJs({})
js.execute("js語句")

騷操作一: 在js代碼中引入python對象 或 python代碼

# 在js代碼中引入python對象
context = js2py.EvalJs({'python_sum': sum})
context.eval('python_sum(new Array(1,4,2,7))')
>>> 14
 
# 在js代碼中加入python代碼
js_code = '''
 var a = 10
 function f(x) {return x*x}
'''
context.execute(js_code)
context.f("14") 或 context.f(14)
>>> 196

騷操作二: 將js代碼轉(zhuǎn)為python模塊,再使用import 導入

# 轉(zhuǎn)換js文件
js2py.translate_file('example.js', 'example.py')
 
# 現(xiàn)在可以導入example.py
from example import example
example.someFunction()

詳見:https://github.com/PiotrDabkowski/Js2Py

2. 使用 execjs

import execjs
 
js_code = open('file.js',encoding='utf-8').read()
ctx = execjs.compile(js_code)
 
# 第一個參數(shù)為ja代碼中的函數(shù)名, 后面為函數(shù)對應的參數(shù)
result = ctx.call('function_name', *args)

3. 使用subprocess調(diào)用node子進程

前面兩種只適合執(zhí)行少量js代碼的情況,當有大量js代碼要執(zhí)行時,還是建議直接調(diào)用node

import subprocess
 
# js文件最后必須有輸出,我使用的是 console.log
pro = subprocess.run("node abc.js", stdout=subprocess.PIPE)
# 獲得標準輸出
_token = pro.stdout
# 轉(zhuǎn)一下格式
token = _token.decode().strip()

關于執(zhí)行效率:

py2js有時候在加載一些加密函數(shù)的時候效率低的可憐,大概是因為執(zhí)行機制的不同:

py2js直接調(diào)用的nodejs引擎不過這個庫用的nodejs解析語法樹轉(zhuǎn)成py代碼,性能挺低的,還不如直接用execjs調(diào)nodejs或自己封裝子進程調(diào)用;execjs調(diào)用的pyv8,不過默認的pyv8的引擎挺老的,es5好多特征都不支持

以上就是Python執(zhí)行JS代碼的三種方式的詳細內(nèi)容,更多關于Python執(zhí)行JS代碼的資料請關注腳本之家其它相關文章!

相關文章

  • Python正則表達式如何進行字符串替換實例

    Python正則表達式如何進行字符串替換實例

    Python正則表達式在使用中會經(jīng)常應用到字符串替換的代碼。這篇文章主要介紹了Python正則表達式如何進行字符串替換,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • Python中MySQLdb和torndb模塊對MySQL的斷連問題處理

    Python中MySQLdb和torndb模塊對MySQL的斷連問題處理

    這篇文章主要介紹了Python中MySQLdb和torndb模塊對MySQL的斷連問題處理,torndb使用起來相對更加簡潔一些,需要的朋友可以參考下
    2015-11-11
  • OpenCV?NAO機器人輔助撿球丟球流程分析

    OpenCV?NAO機器人輔助撿球丟球流程分析

    這篇文章主要介紹了OpenCV?NAO機器人輔助撿球丟球,本項目使用NAO機器人識別球并撿起,然后將其扔到指定位置,主要涉及圖像的獲取、濾波、目標物體定位和NAO機器人的運動控制,需要的朋友可以參考下
    2022-05-05
  • Python閉包與閉包陷阱舉例詳解

    Python閉包與閉包陷阱舉例詳解

    閉包并不只是一個Python中的概念,在函數(shù)式編程語言中應用較為廣泛,下面這篇文章主要給大家介紹了關于Python閉包與閉包陷阱的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • pytorch 實現(xiàn)在測試的時候啟用dropout

    pytorch 實現(xiàn)在測試的時候啟用dropout

    這篇文章主要介紹了pytorch 實現(xiàn)在測試的時候啟用dropout的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python控制臺獲取輸入與常見的正則表達式用法

    Python控制臺獲取輸入與常見的正則表達式用法

    這篇文章主要給大家介紹了關于Python控制臺獲取輸入與常見的正則表達式用法的相關資料,在Python編程中,控制臺輸入和正則表達式是兩個重要而實用的概念,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 詳解Python中的數(shù)據(jù)清洗工具flashtext

    詳解Python中的數(shù)據(jù)清洗工具flashtext

    FlashText是GitHub上的一個開源Python庫,正如之前所提到的,它在提取關鍵字和替換關鍵字任務上有著極高的性能。本文將詳解一下flashtext的使用,需要的可以參考一下
    2022-06-06
  • Django 創(chuàng)建新App及其常用命令的實現(xiàn)方法

    Django 創(chuàng)建新App及其常用命令的實現(xiàn)方法

    這篇文章主要介紹了Django 創(chuàng)建新App及其常用命令的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 用Python將庫打包發(fā)布到pypi

    用Python將庫打包發(fā)布到pypi

    這篇文章主要介紹了用Python將庫打包發(fā)布到pypi,文中有很詳細的代碼作參考,對正在學習python的小伙伴們有很好的學習價值,需要的朋友可以參考下
    2021-04-04
  • Python如何將裝飾器定義為類

    Python如何將裝飾器定義為類

    這篇文章主要介紹了Python如何將裝飾器定義為類,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07

最新評論