两个库搞定python中引用javascript代码块/文件

在一些特殊的python应用场景下需要逆向执行javascript代码块或者.js文件,比如:爬虫的时候下载下来的html页面中包含你要逆向执行的js代码块。

file

【阅读全文】

在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代码块时,如果使用中文会出现乱码的情况不能自动转换编码。并且在中/英文混用的时候会出现报错的情况。

file

【往期精彩】

python实现excel数据与mysql数据库互通有无!

python 实现超快窗口截图,自动获取当前活动窗口并展示截图...

怎么用python做一个解压缩小工具,以后再也不用下载各种格式的解压缩软件了...

python中最简单的turtle绘图:奥运五环!

知识汇总:python办公自动化应该学习哪些内容?

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:两个库搞定python中引用javascript代码块/文件 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 发现几个好玩的游戏编程平台,与君共勉!

    俗话说:兴趣是最好的老师,编程也是一样。若是一开始就接触枯燥的代码编写有些人难免会放弃,最好的方式都是产生兴趣,循序渐进,渐入佳境的状态。 【阅读全文】 今天发现了几个比较的有趣的编程游戏平台,通过玩游戏的方式来了解编程、喜欢编程。 1、Codewars CodeWars 是个的一个通过实战训练来达到提高编程开发技能的站点,主要提供的编程语言有:C++、C#…

    2023年4月2日
    00
  • word文档样式批量处理,久违了

    这里批量处理word文档的操作主要是通过python-docx非标准库实现的,通过定位到文档对象、再到段落、最后到一行文本从而完成针对文字对象的处理。 【阅读全文】 使用pip的方式安装python-docx pip install python-docx 将实现过程中需要的模块导入进来 from docx import Document # 文档处理对象 …

    2023年4月2日
    00
  • python四个性能检测工具,包括函数的运行内存、时间等等…

    python虽然是一门’慢语言’,但是也有着比较多的性能检测工具来帮助我们优化程序的运行效率。 【阅读全文】 这里总结了五个比较好的python性能检测工具,包括内存使用、运行时间、执行次数等方面。 首先,来编写一个基础的python函数用于在后面的各种性能测试。 def base_func(): for n in range(10000): print(‘…

    2023年4月2日
    00
  • 懒人python操作,代码中永远只需要导入一个库

    Pyforest是一个开源的Python库,可以自动导入代码中使用到的Python库。 【阅读全文】 实话说,作为一个程序员还是得不停的学习呀。昨天晚上睡觉之前就在论坛上面溜达了一会儿,发现了有个叫pyforest的python非标准库可以自动导入代码中使用到的Python库,我竟然还不知道。 于是,迫不及待的测试了一下还真行,真是拯救了我们这些懒人。事情的…

    2023年4月2日
    00
  • 如何将多张图片合成mp4视频格式,并加入背景音乐…

    【阅读全文】 实现的思路:将准备好的图片通过opencv读取出来,并将其设置好帧数等参数后合成为无声视频。最后通过moviepy编辑视频将背景音乐加入到视频中。 开始之前还是需要说明一下非标准库的来源,因为有些库的名称和需要导入模块的名称不一定就是一样的。 import os # python标准库,不需要安装,用于系统文件操作相关 import cv2 #…

    2023年4月2日
    00
  • python 自定义异常/raise关键字抛出异常

    在编程过程中合理的使用异常可以使得程序正常的执行。有直接抛出异常的形式,也能通过捕获异常加入异常时的业务逻辑处理。 【阅读全文】 创建自定义异常类案例 class MyException(Exception): def __init__(self, msg): ”’ :param msg: 异常信息 ”’ self.msg = msg 使用raise关键…

    2023年4月2日
    00
  • 用python为心爱的人制作520照片墙,已成功做出效果图

    马上又要进入一年一度的520了,作为一个地地道道的程序猿心里慌得一批。除了吃饭买礼物看电影好像就没有更多的想法了,于是想想将女友从以前到现在的所有照片整理了一下准备制作一个前所未有的照片墙。 【阅读全文】 当然,这里我使用的照片是从百度上面拿下来的,私人照片不能公开,哈哈~ 没有女朋友的也可以试试,毕竟万一哪天就有了呢! 话不多说,进入正题吧,先将需要的非标…

    2023年4月2日
    00
  • 知识汇总:python办公自动化应该学习哪些内容

    【阅读全文】 当前python自动化越来越受到欢迎,python一度成为了加班族的福音。还有大部分人想利用python自动化来简化工作,不知道从何处下手,所以,这里整理了一下python自动化过程中的各种办公场景以及需要用到的python知识点。 Excel办公自动化 python 针对excel表格处理的非标准库应该是最多的,这也是把excel办公自动化放…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部