两个库搞定python中引用javascript代码块/文件
2022/5/23 3:02:41
本文主要是介绍两个库搞定python中引用javascript代码块/文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在一些特殊的python应用场景下需要逆向执行javascript代码块或者.js文件,比如:爬虫的时候下载下来的html页面中包含你要逆向执行的js代码块。
在python编程中提供了两个非标准库js2py与PyExecJS都能实现在python中运行代码块的效果的。
1、js2py的使用过程
js2py适用于js代码少量情况,如果用于很长的混淆的js代码,转译过来的大概率会报错。
# 使用pip的方式安装: pip install js2py
执行js代码块的方式来运行代码
import js2py # 导入js2py处理库 # 创建javascript代码块的python字符串 js_code = ''' var date = new Date().getTime() ''' 调用 js2py.eval_js函数执行javascript代码块 result = js2py.eval_js(js_code) print(result) # 1648984478464
执行js文件的方式来运行代码
# 创建一个javascript文件hello_world.js # # function hello_world(name){ # return name; # } hello_world = js2py.eval_js(open('./hello_world.js', 'r', encoding='utf-8').read()) print(hello_world("公众号:Python 集中营")) # 我是 公众号:Python 集中营
2、PyExecJS的使用过程
通过python代码去执行JavaScript代码的库,依赖于javascript运行环境,最好可以装个node.js,相比于js2py,他可以运行多一点的js代码。
使用pip的方式安装: pip install PyExecJS import execjs # 导入execjs处理库 print(execjs.get().name) # 获取javascript的默认执行环境 # Node.js (V8)
我的windows上面默认的js环境是nodejs,当然是用操作系统默认的js环境也是OK的。
执行一下刚刚上面创建的hello_world.js文件。
# 需要先将即将执行的代码块编译一下 compile_code = execjs.compile(open('./hello_world.js', 'r', encoding='utf-8').read()) # 使用编译后的代码块call函数调用js文件中的hello_world函数 result = compile_code.call('hello_world','python') print(result) # python
还可以使用eval函数进行调用
result = compile_code.eval("hello_world('python')") print(result) # python
当然,也可以像js2py一样直接执行js代码块的。
result = execjs.eval('""+ new Date().getTime()') print(result) # 1648986998002
注意:使用execjs执行javascript代码块时,如果使用中文会出现乱码的情况不能自动转换编码。并且在中/英文混用的时候会出现报错的情况。
这篇关于两个库搞定python中引用javascript代码块/文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22初创企业的效率秘诀!实用的看板式任务管理工具推荐
- 2024-12-22新能源汽车销售难题如何破?看板工具助力门店管理升级
- 2024-12-218 款现代无代码工具,轻松提升开发者工作效率 ???????
- 2024-12-21从线索跟踪到业绩提升:销售任务管理系统推荐
- 2024-12-21刚刚发布RobinReach:多渠道社交媒体管理工具 ??
- 2024-12-21跨地域协作无压力!推荐几款必备的可视化协同工具
- 2024-12-21初学者指南:轻松掌握文章编辑器
- 2024-12-21Excel数据导出教程:让数据迁移变得简单
- 2024-12-21Excel数据导入入门教程
- 2024-12-215分钟速览:优化项目管理必备的5款高效工具