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

    来源:忘记了

  • 相关阅读:
    struts1 Hibernate3初学
    java学习笔记
    改良程序需要的11个技巧
    SharePoint 2010 PowerShell 系列 之 应用总结
    PowerPivot for excel 100 Create KPI
    Sharepoint 2010 控件系统 之 扩展 SaveButton
    Entity Framework 5 一个模型多个关系图 期待已久了
    PowerPivot for Sharepoint 2010 配制及常见错误
    SharePoint 2010 PowerShell 系列 之 应用总结 (二)
    Sharepoint 2010 控件系统 之 TextField、LookupField、NoteField、RichTextField、SaveButton
  • 原文地址:https://www.cnblogs.com/lovesKey/p/11223231.html
Copyright © 2020-2023  润新知