Premièrement, les premiers mots
Dans le référendum Web du Mubtile quotidien, les paramètres sont généralement cryptés, nous devons donc analyser le code source. En ajustant le code JS principal, utilisez Python pour effectuer ce code avec Python pour effectuer Python avant et après le codage du paramètre, cet article parle de quatre façons d'appeler JS avec Python.
Lundi, préparation de
Faites un script JS simple comme exemple, écrivez le code dans le fichier
une méthode identifiant, calculez deux numéros et
//norm.js//计算两个数的和function add(num1, num2) { return num1 + num2;}
PYEXECJS est le meilleur moyen, sous le déploiement de la classe d'une manière: lips JS School est soutenu par JS Code
Dans l'environnement JS local comprend: Node.js, PYV8, PHANTOMJS, Nashorn et al
Tout d'abord, nous devons d'abord installer des dépendances PYEXECJS
//py_exec_js_demo.py//安装依赖pip3 install PyExecJS
,la source
def js_from_file(file_name): """ 读取js文件 :return: """ with open(file_name, 'r', encoding='UTF-8') as file: result = file.read() return result
Lire à partir du fichier JS et sa chaîne JS mentionnée ci-dessus a été compilée et une limite de chaîne traduite.Objet context
import execjsfrom js_code import *# 编译加载js字符串context1 = execjs.compile(js_from_file('./norm.js'))
Enfin, la méthode d'appel () de l'objet context est appelée à mettre en œuvre la méthode JS
dans laquelle le paramètre contient: code JS est ajusté en fonction de Le nom de la méthode, la méthode correspondante que je dois faire attention à elle, car Pyexecjs fonctionne dans un environnement JS local, l'environnement JS est démarré avant d'utiliser et conduit éventuellement à la vitesse de fonctionnement lente
peut être plus de fonctionnalités:
# 调用js代码中的add()方法,参数为2和3# 方法名:add# 参数:2和3result1 = context1.call("add", 2, 3)print(result1)
https://github.com/doloopwhile/pyexecjs Quatre façons 2: JS2PY
JS2PY est une interprète JS faite par Python pur, complètement séparé de l'environnement JS, Code JS converti directement en code Python
En premier, installez la bibliothèque dépendante
# 安装依赖库pip3 install js2py
Puis créez une méthode à l'aide de la méthode Evaljs () dans le contexte JS2PY # 使用获取上下js2py生成一个上下文环境context = js2py.EvalJs()
# 执行整段JS代码context.execute(js_content)
Ensuite, le contexte du script JS, convertissez-le au code Python
# 使用上下文context调用具体的函数# 函数名:add# 参数:1,2result = context.add(1, 2)print(result)
en utilisant la méthode dans JS dans le contexte, la cupiditéLe nombre d'entrées peut être utilisé
Oui, si JS est un code difficile à long terme, la transition vers Python peut signaler des erreurs
peut plus de fonctionnalités:
https://github.com/piotrdabkowski/js2py
5, trois mode: nœud.js
En réalité, exécutez les commandes Python OS.Popen, exécutez des scripts JS ]
D'abord sûr, assurez-vous que le nœud.js Environnement a été installé dans la version locale pour modifier le script JS, une fonction d'exportation supplémentaire, pratique pour que les fonctions internes soient appelées
//计算两个数的和function add(num1, num2) { return num1 + num2;}//新增一个导出函数(node方式)module.exports.init = function (arg1, arg2) { //调用函数,并返回 console.log(add(arg1, arg2));};
, Ensuite, la méthode JS s'appellera la commande pour composer une chaîne
# 组成调用js的命令# node命令:node -ecmd = 'node -e "require(\'%s\').init(%s,%s)"' % ('./norm', 3, 5)
Enfin, la commande peut être exécutée par OS.Popen
pipeline = os.popen(cmd)# 读取结果result = pipeline.read()print('结果是:', result)
import PyV8from js_code import js_from_filewith PyV8.JSContext() as ctx: ctx.eval(js_from_file('./norm.js'))# 调用js函数,指定参数ctx.locals.add(1, 2)
6, Véhicules Quatre: PYV8 Le PYV8 est Google que Google utilise l'outil Chrome V8 avec la bibliothèque packagée Python , il ne s'appuie pas sur l'environnement JS local, Vitesse de course rapide , après test d'examenRepéré, Mac et PC Utilisez PYV8 pour signaler de nombreux problèmes étranges dans l'environnement Python3, il n'est donc pas recommandé! De nombreuses fonctionnalités peuvent être référencées: https://github.com/emmetio/pyv8-binaires Sept à la fin Le résumé ci-dessus a résumé les quatre manières de l'appel de Python JS, dans le projet REPTILE, qui utilise souvent la commande de nœuds sera vérifiée une fois, garantissant qu'aucun problème, n'utilisez aucun moyen des trois premières façons de changer.