iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python使用js2py库运行js代码
  • 173
分享到

python使用js2py库运行js代码

2024-04-02 19:04:59 173人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、js2py库概述二、抽取js代码运行结果三、提取js语句内变量和对象等四、其他在日常使用python做爬虫,一般会用到以下手段: 请求URL,返回html文本,然后通过xpa

在日常使用python爬虫,一般会用到以下手段:

  • 请求URL,返回html文本,然后通过xpath、CSS或者re,提取数据
  • 有些网页的数据通过ajax异步请求加载,此时找到对应的接口,调用并直接使用接口返回的数据
  • 有时候如果网站反爬或安全机制比较高时,则会做一些验证或者加密,比如cookie内必须携带token等信息,而这些信息是通过混淆过的js代码计算得出的。

针对1,应该是爬取大多数没有任何安全机制并且是静态网页时,常用手段,而2是提取数据最为快速的,但是接口并不是总是返回我们最喜欢的JSON字符串,有可能是一段js代码定义的变量数据,针对3则更为头痛,如果在Python汇总能运行js代码,则可能会解决掉我们大部分的烦恼,本文即讲解一个Python包,用于直接在Python代码中直接运行js代码,然后得到我们感兴趣的函数、数据或者js代码运行之后的结果。

一、js2py库概述

js2py是众多可以在Python中运行js代码比较优秀的库。

安装js2py方法如下:

pip install js2py

js2py中有以下两个比较关键的方法:

方法解释示意
js2py.eval_js(js_string)直接运行含有js代码的字符串(或js文件),并得出结果

js_string='var a=10'

js2py.eval_js(js_string) #输出10

js2py.EvalJs()

生成一个EvalJs对象

可通过该对象的execute方法来运行一段js代码(或js文件),并得到对应的变量和对象(即抑制输出,得到变量和对象,便于后续直接使用)

可通过该对象的eval()方法来运行一段js代码,并得到结果

js_string='var a=10'

js_obj=js2py.EvalJs()

js_obj.execute(js_string)

js_obj.a #输出为10

二、抽取js代码运行结果

import js2py
string='var db={chars:["a","b","c","d","f","g","h","j","k","m","n","p","q","r","s","t","w","x","y","z"],datas:[["005970","国泰消费优选股票","GTXFYXGP","1.9082","1.9082","1.8657","1.8657","0.0425","2.28","开放申购","开放赎回","","1","0","1","","1","0.15%","0.15%","1","1.50%"],["004069","南方中证全指证券公司ETF联接A","NFZZQZZQGSETFLJA","1.1438","1.1438","1.1212","1.1212","0.0226","2.02","开放申购","开放赎回","","1","0","2","","1","0.12%","0.12%","1","1.20%"]],count:["9981","3745","1653","4583"],record:"10481",pages:"5241",curpage:"1",indexsy:[-0.04,-0.34,-0.03,],showday:["2021-03-05","2021-03-04"]}'
 
mydict=js2py.eval_js(string) #最后会将string内定义的对象,变为Python字典并赋值给mydict
 
string='''
function add(a, b) {
    return a + b
}
'''
myadd=js2py.eval_js(string) #会得到一个add函数并赋值给myadd,后续可通过myadd直接调用
  • 以上第一个string,便是作者在爬取天天基金的基金数据时,发现该网站接口返回的基本都是一个js语句,在该语句内定义了返回的数据,当然,如果不通过js2py,也可以将该string通过Python的eval或者exec最终解析成Python字典,但比较繁琐(大概思路即使用字符串方法,将无用的字符删除掉,然后将字符串变成一个Python字典的定义格式,最后运行eval或者exec函数即可)
  • 以上第二个string,即一个字符串,该字符串内定义了一个js函数,此时便可以得到该函数并赋值给Python变量,后续便可以通过该变量调用该函数,并且好像是该函数是在Python内部定义的一样

三、提取js语句内变量和对象等

import js2py
js_obj=js2py.EvalJs()
string='''
var a=10
function func(a,b){
    return a*b
}
'''
 
js_obj.execute(string)
js_obj.a #输出为10
js_obj.func #为func函数
js_obj.func(3,4) #输出为12

以上示意,变得更有意思,可以通过execute方法,运行下js代码,先不输出结果,而是得到这里面定义的变量、函数等,然后把这些作为属性附加给js_obj对象,后续便可以通过该对象访问到这些属性,这样会更加直观和灵活,好像是直接在Python中写js代码一样

四、其他

当然,Python还有其他运行js代码的库,但是作者感觉js2py整体是最契合Python的,甚至语法都基本没什么变化,故推荐使用该库

该库还有其他很多方法和用途,不过以上是最为常用的场景,读者如果需要或感兴趣,可以进一步研究学习,不顾如果能掌握好以上方法,基本可以满足90%的日常需要了。

到此这篇关于python使用js2py库运行js代码的文章就介绍到这了,更多相关python 运行js代码内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python使用js2py库运行js代码

本文链接: https://www.lsjlt.com/news/118333.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python使用js2py库运行js代码
    目录一、js2py库概述二、抽取js代码运行结果三、提取js语句内变量和对象等四、其他在日常使用Python做爬虫,一般会用到以下手段: 请求URL,返回HTML文本,然后通过xpa...
    99+
    2024-04-02
  • html怎么运行js代码
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
  • 如何用iPad运行Python代码
    这篇文章给大家介绍如何用iPad运行Python代码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。其实,不只是iPad,手机也可以。痛点我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题。其中最让人头...
    99+
    2023-06-17
  • python怎么运行代码
    python运行代码的方法:使用快捷键【win+R 键】打开运行窗口,然后输入:“cmd”,点击确定打开dos窗口。切换到你需要运行的文件所在的盘。再打开你需要运行的文件夹中。最后输入:python ***.py(程序文件的名字)...
    99+
    2024-04-02
  • 如何在Windows中使用Bash运行Python代码?
    在Windows中使用Bash运行Python代码,可以帮助开发者将开发环境从Windows转移到Linux或macOS上,或者在Windows上使用Linux命令行工具。本文将介绍如何在Windows中安装和配置Bash,以及如何使用Ba...
    99+
    2023-06-25
    windows bash spring
  • pycharm怎么运行python代码
    使用 pycharm 运行 python 代码的步骤:创建 python 项目。创建脚本或程序。单击“运行”按钮或按快捷键运行脚本。使用调试器在调试模式下运行代码。其他运行选项包括:运行...
    99+
    2024-04-03
    linux python pycharm
  • spyder怎么运行python代码
    要在Spyder中运行Python代码,您可以按照以下步骤操作:1. 打开Spyder:在Windows系统上,可以从开始菜单中找到...
    99+
    2023-10-12
    spyder python
  • Python 使用tempfile包轻松无痕的运行代码
    目录一、简介二、临时文件夹2.1 获取临时文件夹2.2 生成临时文件夹三、临时文件3.1 生成不自动删除(关闭时)的临时文件3.2 生成自动删除的临时文件技术交流一、简介 这里介绍p...
    99+
    2024-04-02
  • 如何使用不到200行代码写一款js类库
    小编给大家分享一下如何使用不到200行代码写一款js类库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!类库设计思路API介绍和效...
    99+
    2024-04-02
  • jupyter如何运行python代码
    要在Jupyter中运行Python代码,您可以按照以下步骤进行操作:1. 打开Jupyter Notebook:在命令行中输入ju...
    99+
    2023-10-19
    jupyter python
  • linux如何使用vim运行代码
    要在Linux上使用vim运行代码,需要使用以下步骤: 打开终端,并使用vim打开你的代码文件,例如:vim test.py。 ...
    99+
    2024-02-29
    linux
  • JS如何实现直接运行html代码
    这篇文章将为大家详细讲解有关JS如何实现直接运行html代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:1、实例代码:<!DOCTYPE ht...
    99+
    2024-04-02
  • Python中怎么执行js代码
    这篇文章将为大家详细讲解有关Python中怎么执行js代码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。正常代码我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。function&n...
    99+
    2023-06-16
  • 用pycharm怎么运行一个python代码
    在 pycharm 中运行 python 代码需要以下步骤:确保 pycharm 和 python 解释器已正确设置。打开要运行的代码文件。选择用于运行代码的运行配置。通过“运行文件”或...
    99+
    2024-04-17
    python pycharm
  • python获取代码运行时间
    有的时候,操作大文件,或者取数,要很久,我们给脚本首尾添加一段代码就知道,这段代码整体的大致运行时间了。 import time start =time.clock() #中间写上代码块 end = time.clock() ...
    99+
    2023-01-31
    代码 时间 python
  • 云服务器运行python代码
    以下是一个简单的 Python 云服务器示例代码,它将运行在 AWS 上,并创建一个名为 "cloud" 的文件夹,将您的数据保存在这个文件夹中。 ```python import csharp 设置 Python 运行环境 with o...
    99+
    2023-10-26
    代码 服务器 python
  • python爱心代码怎么运行
    要运行 python 爱心代码,步骤如下:安装 python 解释器。创建一个 python 文件并复制代码。保存文件并命名为 .py 扩展名。打开终端或命令提示符。导航到 python...
    99+
    2024-04-02
  • 深度学习之python使用指定gpu运行代码
    一、前提 1、在命令行使用nvidia-smi查看gpu设备情况,当存在空闲设备时才能用,否则会出现运行内存不够出错的情况(具体参考文章GPU之nvidia-smi命令详解); 2、安装好cuda和c...
    99+
    2023-09-04
    python 深度学习 开发语言
  • python怎么换行而不运行代码
    在Python中,可以使用特殊字符`\n`来表示换行。当你想要在代码中换行而不让其运行,可以在需要换行的地方添加`\n`。例如:``...
    99+
    2023-08-17
    python
  • 怎么在python中执行js代码
    本篇文章为大家展示了怎么在python中执行js代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是js代码混淆我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。function&nbs...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作