有什么方法可以从网页中获取执行的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 可以分为以下两组-
- 浏览器没有 图形用户界面 (GUI) 又名 Headless browser :例如PhantomJS基于Webkit 渲染引擎的 headless 浏览器,SlimerJS基于 Gecko 渲染引擎的 headless 浏览器,更多信息请参见 here .您可以使用 selenium 与 PhantomJS 进行互操作(python 和 PhantomJS 之间的粘合剂)或者你可以使用 PyQt并使用 python 运行 JS,如 here .
- 浏览器具有图形用户界面 (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()