javascript - 在python中获取执行的javascript内容

标签 javascript python-2.7 browser request

<分区>

有什么方法可以从网页中获取执行的javascript内容吗? 我已经尝试过请求+ BeautifulSoup,机械化,这些让我得到了网页的“源代码”而不是执行的javascript。 例如,这个网站:- http://listen.tidal.com/login

如您所见,在源代码中,有未执行的 JS,但是,当您检查元素时,您会看到已执行的代码。

现在,有什么方法可以在 python 中获取已执行的代码吗? 请提示,因为我已经尝试使用 mechanize 模拟浏览器并且它与 reuqests 一样。 谢谢你

最佳答案

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

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

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

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

关于javascript - 在python中获取执行的javascript内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32834344/

相关文章:

javascript - 传递当前 Google map 标记的坐标

python-2.7 - 如何覆盖 Flask-Admin 的 edit_form() 将以前的值保留为占位符

python - 高效地获取列特定列表比较中的唯一条目

javascript - 我可以强制浏览器在继续执行 javascript 之前呈现出 DOM 更改吗?

c# - 如何删除在 webbrowser 控件中导航的文件?

javascript - PHP cookie 设置为重定向,googlebot 也重定向 - 如何阻止这个?

javascript - 通过Id获取记录XSJS

javascript - jQuery:即使复选框被选中也会触发

image - 翻转 Matplotlib imshow() 的 x 和 y 轴

c# - Webbrowser.DocumentStream 或 Webbrowser.DocumentText 不工作?