在python中获取执行的javascript内容

Xon*_*hiz 8 javascript browser request python-2.7

有没有办法从网页上获取执行的javascript内容?我已经尝试过请求+ BeautifulSoup,机械化,这些让我得到了网页的"源代码",而不是执行的javascript.例如,这个网站: - http://listen.tidal.com/login

正如您所看到的,在源代码中,存在未执行的JS,但是,当您检查元素时,您将看到执行的代码.

现在,有什么方法可以在python中获得EXECUTED代码吗?请提示,因为我尝试使用mechanize来模拟浏览器,它就像reuqests一样.谢谢

SIs*_*lam 2

事实上,JavaScript的执行需要JavaScript引擎。Python是一种拥有自己的解释器(编译器!)来执行Python代码的语言。这是两种不同的技术。因此,如果你想从 python 执行 javascript,python 必须具有 api 或某种与执行 javascript 的引擎交互的绑定。幸运的是,Python 与多个 JS 引擎具有交互性,用于实现与 Web 相关的工作(测试等)。这种可互操作的 JS 可以分为以下两组:

  1. 没有图形用户界面(GUI)的浏览器又名无头浏览器:例如PhantomJS是基于Webkit渲染引擎的无头浏览器,SlimerJS是基于Gecko渲染引擎的无头浏览器,更多信息请参见此处您可以使用selenium(python 和 PhantomJS 之间的粘合剂)与 PhantomJS 进行互操作,或者您可以使用PyQt并使用 python 来运行 JS,如下所示
  2. 具有图形用户界面(GUI)的浏览器:例如Firefox,Chromium,Safari等。在这种情况下,您也可以通过selenium python执行JS。

selenium python 中 JS 的简单执行示例如下 -

from selenium import webdriver
#define driver- firefox, chrome  or phantomjs etc.
driver = webdriver.Firefox()
#Open the url
driver.get('https://www.google.com')
#see how javascript simple alert is being executed
driver.execute_script("alert('hello world');")
#close the driver  i.e. closing opened Firefox instance!
driver.close()
Run Code Online (Sandbox Code Playgroud)