找回密码
 会员注册
查看: 30|回复: 0

1286]python执行js代码方法汇总(PyExecJS、Js2Py、py-mini-racer)

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-2 20:41:21 | 显示全部楼层 |阅读模式
文章目录js2py简介及使用js2py简介js2py模块的使用js2py快速入门js代码翻译js代码中使用函数python执行js代码,学会这几个方法就够了楔子常见的Python调用JavaScript的方式使用nodejs命令PyExecJS方法通过Web浏览器DrissionPage方式playwright方式selenium方式Js2Py方式py-mini-racer方式小结js2py简介及使用github:https://github.com/PiotrDabkowski/Js2Pyjs2py简介在平时爬虫过程中,我们会遇到网站对js文件加密,无法爬取,现在就让我们来了解一下js2py模块,它可以对js文件进行解密。js2py模块的使用在python中执行js代码,通常两个库:js2py,pyexecjsjs2py是纯python实现的库,用于在python中运行js代码,本质上是将js代码翻译成python代码js2py安装:pipinstalljs2pyjs2py快速入门快速入门1:importjs2py#print('helloworld')js2py.eval_js('console.log("helloworld")')#'helloworld'实现print('helloworld')#func_js为add()函数func_js="""functionadd(a,b){returna+b}"""add=js2py.eval_js(func_js)#实现add()函数print(add(1,2))#3print(js2py.eval_js('vara="python";a'))#pythonadd=js2py.eval_js('functionadd(a,b){returna+b}')print(add(2,3))#5123456789101112131415161718快速入门2:importjs2py#1.创建js环境context=js2py.EvalJs()#2.定义js函数add1=context.execute('functionadd(x,y){returnx+y}')print(add1)#None#3.调用js函数result=context.add(10,20)print(result)#30#3.可以定义变量context.n={'class':'HelloWorld!'}print(type(context.n))#print(context.n)#{'class':'HelloWorld!'}1234567891011121314151617js代码翻译翻译js文件为py文件#翻译js文件为py文件importjs2pyprint(js2py.translate_js("console.log('helloworld')"))'''fromjs2py.pyjsimport*#settingscopevar=Scope(JS_BUILTINS)set_global_object(var)#Codefollows:var.registers([])var.get('console').callprop('log',Js('helloworld'))'''12345678910111213fromjs2py.pyjsimport*#settingscopevar=Scope(JS_BUILTINS)set_global_object(var)#Codefollows:var.registers([])var.get('console').callprop('log',Js('helloworld'))''''helloworld''''123456789101112将js文件翻译成python脚本(1)新建test.js文件,编辑内容:console.log(“helloworld”)(2)写代码,并执行importjs2py#将js文件翻译成python脚本js2py.translate_file('test.js','test.py')1234(3)生成test.py文件,打开执行__all__=['test']#Don'tlookbelow,youwillnotunderstandthisPythoncodeIdon't.fromjs2py.pyjsimport*#settingscopevar=Scope(JS_BUILTINS)set_global_object(var)#Codefollows:var.registers([])var.get('console').callprop('log',Js('helloworld'))#Addlibtothemodulescopetest=var.to_python()''''helloworld''''12345678910111213141516171819js代码中使用函数示例1importjs2py#执行了一个python代码print('sum:',sum([1,2,3]))#sum:6context=js2py.EvalJs({'python_sum':sum})print(context)#print(result)#30#3.或者通过eval函数调用result2=context.eval('add(10,20)')print(result2)#301234567891011121314151617示例3importjs2py#在js代码中导入Python模块并使用#使用pyimport语法js_code="""pyimportrequestsconsole.log('导入成功');varresponse=requests.get('http://www.baidu.com');console.log(response.url);console.log(response.content);"""js2py.eval_js(js_code)''''导入成功''http://www.baidu.com/'PyObjectWrapper(b'\r\n
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:11 , Processed in 1.872194 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表