zoukankan      html  css  js  c++  java
  • python写爬虫遇到需要解码js一些记录

    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))
    

    来源:忘记了

  • 相关阅读:
    Windows Server 2003 IIS 使用 Excel.Application
    AutoCAD2008换硬盘后重新激活
    730KII 打印机 Win7 2017年11月更新系统补丁后无法打印
    军训卫生巾鞋垫尺码简易参考
    电阻功率与电流关系
    万用表判断场效应管的好坏
    避免电路接触时火花的产生
    phpexcel如何读和写大于26列的excel
    铅酸蓄电池正确使用与充电管理
    铅酸蓄电池单格最高与最低电压
  • 原文地址:https://www.cnblogs.com/lovesKey/p/11223231.html
Copyright © 2011-2022 走看看