正文:
1. Node.js 是一个提供浏览器环境的平台,可以在非浏览器环境中运行JavaScript代码。它支持在第三方安装的基础上运行 JavaScript 文件。
2. 在 Python中,有一些基础的语法可以用来读取文件。例如:
“`python
with open(文件路径, 操作类型(r), encoding=’utf-8′) as f:
data = f.read()
“`
3. pyexecjs 库的作用是连接 Python 和 JavaScript 代码,使得 JavaScript 代码可以被 Python 代码调用和运行。可以通过以下方式安装和导入 pyexecjs 库:
安装方法:`pip install pyexecjs`
导入方法:`import execjs`(没有 py 前缀)
具体使用方法是,首先通过上述的文件读取方式获取到 JavaScript 文件的内容,将其赋值给变量data。然后使用以下语法对其进行编译:
“`python
execjs.compile(data)
“`
此时,原来的 data 已经被编译,不再是字符串类型。需要注意的是,原始的 JavaScript 文件中不要包含调用文件内函数的代码,否则可能会导致系统报错。可以使用以下语法来调用编译后的 JavaScript 代码中的函数:
“`python
execjs.compile(data).call(“函数名”, 参数 1, 参数 2…)
“`
以下是一个代码实例:
“`python
import execjs
with open(文件路径, 操作类型(r), encoding=’utf-8′) as f:
data = f.read()
compiled_js = execjs.compile(data)
result = compiled_js.call(“函数名”, 参数 1, 参数 2…)
代码实例:
demo.js:
function my(x){
return “hello,world”+x
}
test.py:
import execjs
with open(/.demo.js,”r”,encoding=’utf-8′) as f:
data=f.read()
d=execjs.complie(data).call(“my”,”thanks”)
print(d)
test.py 代码运行结果应为:
hello,world thanks
下面是一些关于中文输出问题:
在具体调用时,输出部分中文可能报错,这是由于编码问题
解决方法:
1- 进入 subprocess 库的源代码
2- 搜索 encoding 662 行处将 encoding=None 的 None 改为’UTF-8′
转载请注明:汇站网 » 关于 JS 逆向学习的 Python 爬虫技术