盘点3个可以操作JavaScript的Python库

开发 前端
本文主要盘点了3个可以操作JavaScript的Python库,分别是PyExecJS、Js2Py和PyV8,只要我们用好了这些模块以后玩爬虫就能更加技高一筹,并且准确率更高了。

[[388298]]

前言

我们都知道Python可以很轻松的实现某些功能,而且还可以编写网页,比如Remi,Pysimplegui,但是操作JavaScript这种浏览器的脚本语言,还是第一次听说,小编也是第一次听说,于是就跟大家脑补这一知识。

一、PyExecJS

是一个可以执行JavaScript脚本的Python模块,可以与网页上的JavaScript进行交互,这样就能更加精准的获取到网页中的加密内容,如果用Python中的网络模块进行请求,会无法解密文档中的加密内容,这个时候使用我们的PyExecJS可以很方便到的解密网页中的加密内容,当然这得你会Js逆向才可以。不过要想PyExecJS解析JS语句没毛病,还得整个Js语言解析环境,这里推荐NodeJS,尴尬。我们来看下PyExecJs的用法:

1.常规操作

  1. import execjs 
  2. aa=execjs.eval("'one|two|three'.split('|')") #执行JavaScript代码,将字符串分割形成数组 
  3. print(aa)  
  4.  
  5. e=execjs.compile('''     #编译一个表达式 
  6. function add(x,y){ 
  7.   return x+y; 
  8. ''') 
  9. print(e.call('add',10,20))#调用编译好的函数并且赋值 

也可以通过获取引擎来运行我们的语句,如下:

  1. print(execjs.get().eval('1+1')) 

2.查看解释引擎

  1. print(execjs.get().name

这里JavaScript的解释引擎是JScript,我们还可以使用自己指定给力的引擎,比如“Nodejs”。

3.指定引擎

  1. import execjs 
  2. import os 
  3. os.environ["EXECJS_RUNTIME"] = "Node" 
  4. print(execjs.get().name

也可以手动指定引擎,如下:

  1. js1=execjs.get(execjs.runtime_names.JScript) 
  2. print(js1.eval('1')) 
  3.  
  4. js2=execjs.get(execjs.runtime_names.Node) 
  5. print(js2.eval('2')) 

二、Js2Py

这个我觉得算是比较好的了,可以说是一个综合体,它不需要依赖别的环境,可以独立运行Js文件,只不过它的运行速度可能会稍微慢一点而已,但是这都不叫事。下面我们来看看它有哪些神器的功能吧。

1.常规操作,必须的

2.循环遍历

  1. import js2py 
  2. aa=js2py.eval_js( 
  3. ''
  4. var i=0; 
  5. for(var c=1;c<6;c++){ 
  6. console.log(c); 
  7.  
  8. ''
  9. print(aa) 

3.读取Js文件

我们可以把JS文件写入文件中,以便我们进行调用,如下:

1.js

  1. function f(aa){ 
  2.     if(aa>11){ 
  3.         console.log('OK'
  4.  
  5.     }else
  6.         console.log('Fail'
  7.   } 

Python文件

  1. import  js2py 
  2. with open('1.js','r'as f: 
  3.     aa=js2py.eval_js(f.read()) 
  4.     print(aa(11)) 

4.爬取网站数据

这里我们以淘宝为主,我想整它的JS脚本文件,如下:

  1. import execjs 
  2. import requests 
  3. import re 
  4. url = 'https://ai.taobao.com/?pid=mm_26632323_6762370_25910879' 
  5. res=requests.get(url).text 
  6. js=re.findall(r'<script>(.*?)</script>',res) 
  7. print(js,'\n'
  8. js1=re.sub(r'eval\(','return(',js[0]) 
  9. html="function getLego2WPK(){" + js1 + "};" 
  10. ctx = execjs.compile(html) 
  11. temp = ctx.call('getLego2WPK'
  12. print(temp

三、PyV8

基于Google的V8引擎打造,遗憾的是目前只支持Python2版本,而且已不再维护,建议Python2的小伙伴可以去试试。

四、总结

本文主要盘点了3个可以操作JavaScript的Python库,分别是PyExecJS、Js2Py和PyV8,只要我们用好了这些模块以后玩爬虫就能更加技高一筹,并且准确率更高了。

 

责任编辑:姜华 来源: Python爬虫与数据挖掘
相关推荐

2018-09-25 11:19:05

开源JavaScript图表库

2021-09-22 12:45:47

Python数据分析

2021-01-28 23:35:37

Python开发数据

2020-03-08 13:24:47

JavaScript开发

2022-12-12 16:35:11

2021-10-09 07:10:31

JavaScript对象Python

2021-05-27 05:25:59

Python数据处理数学运算

2021-08-26 10:25:04

JavaScript进阶操作 前端

2021-08-30 10:25:48

JavaScript进阶操作前端

2020-10-27 07:56:35

Python

2021-02-22 11:12:24

ExcelPython数据

2018-06-05 10:45:41

Python模板库模板引擎

2024-06-18 10:28:46

2021-07-26 05:20:47

JavaScript解构赋值数组解构

2024-09-10 15:34:18

JavaScript解构赋值

2024-07-17 11:35:31

JavaScript解构赋值

2021-05-19 22:23:56

PythonJavaScript数据

2020-10-27 07:37:07

Python

2020-05-15 10:22:07

Python开发工具

2020-04-03 13:43:23

Python列表推导式字典推导式
点赞
收藏

51CTO技术栈公众号