python调用js代码,python 运行js

  python调用js代码,python 运行js

  本文主要介绍thon使用js2py库运行js代码。文中介绍的示例代码非常详细,对大家的学习或工作都有一定的参考价值。有需要的朋友下面跟边肖学习。

  00-1010一、js2py库概述二。js代码运行结果提取三。js语句中变量和对象的提取。日常生活中使用Python的其他爬虫一般使用以下手段:

  请求URL,返回HTML文本,然后通过xpath、css或re提取数据。有些网页的数据是通过AJAX异步请求加载的。这时候找到对应的接口,调用并直接使用接口返回的数据。有时候网站爬回来或者安全机制高,会做一些验证或者加密。例如,cookie必须携带令牌和其他信息,这些信息是通过混淆js代码计算出来的。对于1来说,应该是在没有任何安全机制的情况下抓取大部分静态网页的常用方式,而2是提取数据最快的方式。但是接口并不总是返回我们喜欢的json字符串,可能是js代码定义的变量数据。对于3来说,就更麻烦了。如果js代码可以在Python中运行,可能会解决我们大部分的麻烦。本文将解释一个Python包。用来直接在Python代码中运行js代码,然后得到我们感兴趣的函数、数据或者js代码。

  

目录

  Js2py是众多可以用Python运行Js代码的优秀库之一。

  安装js2py的方法如下:

  pip安装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_obj.a #的输出是10。

  

一、js2py库概述

  导入js2py

  String= var db={chars: [a , b , c , d , f , g , h , j , k , m , n , p , q ,] GTXFYXGP , 1.9082 , 1.8657 , 1.8657 , 0.0425 , 2.28 ,开放式申购,,开放式赎回, , 1 , 0 南方中证全指数证券公司ETF联接A , NFZZZZZQGSETFLJA , 11.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

  在线

  =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代码内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: