Js2Py是什么?
Js2Py是一个100%使用纯Python编写的JavaScript翻译器和解释器库,通过将JavaScript直接翻译成Python来工作,可以轻松地从Python代码中运行JavaScript代码。
安装
pip install js2py
简单示例:
>>> import js2py
>>> js2py.eval_js('console.log( "Hello World!" )')
'Hello World!'
>>> add = js2py.eval_js('function add(a, b) {return a + b}')
>>> add(1, 2) + 3
6
>>> add.constructor
function Function() { [python code] }
>>> js2py.require('underscore')
'function _(obj) { [python code] }'
代码案例
案例一:
此案例中,数据本身经过了多轮的加密,需要通过反复多次清洗JavaScript代码 -> 执行JavaScript代码,来得到最终结果。
import js2py
# 获取<script>标签的内容,里面包含了需要执行的JavaScript代码
script_tag = response.css('.uk-list.tm-list script::text').extract_first()
# 清洗成可运行的JavaScript代码
script1 = script_tag.replace('eval(d)', 'd').replace('<script type="text/javascript">','')
# 使用js2py.eval_js()函数执行JavaScript代码,之后再通过replace()函数清洗成可执行的js代码
script2 = js2py.eval_js(script1).replace('eval(', '')[:-1]
script3 = js2py.eval_js(script2).replace('document.write(', '')[:-1]
# 执行清洗好的JavaScript代码得到最终结果
a_tag = js2py.eval_js(script3)
案例二:
此案例相对简单,不需要经过复杂的多轮清洗,只需先获得可执行的JavaScript代码,再通过js2py.eval_js()函数执行即可。
import js2py
# 获取<script>标签的内容,里面包含了需要执行的JavaScript代码
script_tag = response.css('.h4 script::text').extract_first()
# 清洗<script>标签的内容,得到可执行的JavaScript代码
script = re.search(r'\".*\);', script_tag).group()[1:].replace('\\', '') + 'd'
# 执行JavaScript代码得到最终结果
email = js2py.eval_js(script)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。