js在线格式化网站

https://beautifier.io/

Python 执行 JS 代码

NodeJS

安装方式

先解决 JS 环境,这里推荐安装 Node.js ,安装方便,执行效率也高。

https://nodejs.org/zh-cn/

然后 pip install PyExecJS 就可以了。

  • 使用例子
>>> import execjs
>>> execjs.get().name # 查看调用的环境
'Node.js (V8)'
>>> ctx = execjs.compile(""" # 执行 JS 语句
... function add(x, y) {
... return x + y;
... }
... """)
>>> ctx.call("add", 1, 2)
3
>>> with open('./test.js') as f: # 执行 JS 文件
... ctx = execjs.compile(f.read())
... ctx.call('add', 1, 2)

PyV8

这是 Google 官方将 Chrome V8 引擎用 Python 封装的库,和 PyExecJS 相比,这个库很轻量,不需要额外装 JS 环境,因为 V8 本身就是环境,同时也因为不需要启动外部环境,执行速度很快。

  • 安装方式

    Python3 安装不要使用pip,因为官方只支持 Python2,需要在这里下载对应系统的二进制文件:github.com/emmetio/pyv…

    然后解压后将 PyV8.py 与 _PyV8.so (如so不是这个名字需要改成这样) 两文件复制到 Python 的 site-packages 目录下,如 /usr/local/lib/python3.6/site-packages 。

    使用例子
>>> import PyV8  # 注意大小写
>>> with PyV8.JSContext() as ctx:
... ctx.eval("""
... function add(x, y) {
... return x + y;
... }
... """)
... ctx.locals.add(1, 2)

Js2Py

最后这个库,作用是将 JS 代码直接转译成 Python 代码,这种方式可以摆脱调用 JS 环境的瓶颈,但遗憾的是如果用于很长的混淆 JS 代码,转译过来的大概率会报错… 所以只建议先尝试一下,如果报错及时更换上面的库。

安装方式

pip install js2py

使用例子

>>> import js2py
>>> add = js2py.eval_js("""
... function add(x, y) {
... return x + y;
... }
... """)
>>> add # 可以看到大括号里已被转译
'function add(x, y) { [python code] }'
>>> add(1, 2)
3
>>> # 使用下边这个方法可以输出转译后的代码
>>> # 可以保存到文件里,下次不需要再次转译
>>> print(js2py.translate_js('var x = 1'))
from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var) # Code follows:
var.registers(['x'])
var.put('x', Js(1.0))

来源:忘记了

python写爬虫遇到需要解码js一些记录的更多相关文章

  1. python写爬虫时的编码问题解决方案

    在使用Python写爬虫的时候,常常会遇到各种令人抓狂的编码错误问题.下面给出一些简单的解决编码错误问题的思路,希望对大家有所帮助. 首先,打开你要爬取的网站,右击查看源码,查看它指定的编码是什么,如 ...

  2. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  3. Python写爬虫-爬甘农大学校新闻

    Python写网络爬虫(一) 关于Python: 学过C. 学过C++. 最后还是学Java来吃饭. 一直在Java的小世界里混迹. 有句话说: "Life is short, you ne ...

  4. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  5. Python写爬虫爬妹子

    最近学完Python,写了几个爬虫练练手,网上的教程有很多,但是有的已经不能爬了,主要是网站经常改,可是爬虫还是有通用的思路的,即下载数据.解析数据.保存数据.下面一一来讲.   1.下载数据 首先打 ...

  6. 《用Python写爬虫》学习笔记(一)

    注:纯文本内容,代码独立另写,属于本人学习总结,无任何商业用途,在此分享,如有错误,还望指教. 1.为什么需要爬虫? 答:目前网络API未完全放开,所以需要网络爬虫知识. 2.爬虫的合法性? 答:爬虫 ...

  7. 用python写爬虫

    Python提供了许多Module,通过这些Module,可以很简单的做一些工作.比如,要获得cloga这个词在百度搜索结果页中的排名结果(排名结果+URL),这就是一个很简单的爬虫需求. 首先,要通 ...

  8. 《用Python写爬虫》学习笔记(二)编写第一个网络爬虫

    1.首先,下载网页使用Python的urllib2模块,或者Python HTTP模块request来实现 urllib2会出现问题,解决方法1.重试下载(设置下载次数) 2.设置用户代理 2.其次, ...

  9. python写爬虫的弯路

    一开始按照视频上的找了笔趣阁的网站先爬一部小说, 找了<遮天>,但是章节太多,爬起来太慢, 就换了一个几十章的小说. 根据视频里的去写了代码, 在正则表达式哪里出了很大的问题. from ...

随机推荐

  1. Thymeleaf 模板使用 Error resolving template "/home", template might not exist or might not be accessible by any of the

    和属性文件中thymeleaf模板的配置相关 1.配置信息 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix= ...

  2. 洛谷 P1047 校门外的树(待完善)

    链接:https://www.luogu.org/problemnew/show/P1047 题目: 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米.我们可以把马路看 ...

  3. [JZOJ5888]GCD生成树

    [JZOJ5888]GCD生成树 题目链接 gugugu 分析 对于N很小的情况,暴力Prim即可 对于值域很小的情况,我的想法与solution不太一样,将值相同的缩成一个点,\(O(w^2)\)预 ...

  4. Cryptography -- 密码学

    Introduction to Cryptography Cryptography enables you to store sensitive information or transmit it ...

  5. SAP应用真的不性感么

    这是一个问题. 上图的One Order是楼下一个部门领导让我给他的团队做的一个古老框架的session. 这个框架诞生于2000年,采用纯面向过程的思路开发.因为上世纪90年代ABAP开始引入对面向 ...

  6. python 制作影视动画、电影特效工具

    一直觉得电影特效,动画制作这些都很什么,在google上搜索了下python开发电影特效的内容,发现了几个不错的软件,都支持python脚本开发. Houdini  Houdini (电影特效魔术师) ...

  7. Linux命令——w、who、whoami、lastlog、last

    参考:Linux w Command Tutorial for Beginners (5 Examples) Linux who Command Tutorial for Beginners (8 E ...

  8. 做一个函数 返回当前日期、当前时间 格式为“XXXX年XX月XX日”

    import time import datetime def time_strf(now_date):#传入0,1,2返回 当前日期.当前时间.当前日期与时间 today=datetime.date ...

  9. jquery动态加载并解决被加载页面js失效问题

    代码布局结构分为 header  left  content html代码如下: <!DOCTYPE html> <html lang="zh-CN"> & ...

  10. nginx添加模块记录

    查看现有nginx的编译参数: [root@iZbp1d0dkjhfmxnxp7wuhmZ nginx-1.12.2]# nginx -Vnginx version: nginx/1.12.2buil ...