使用 Selenium webdriver 和 Python 获得完全呈现的 HTML

我正在尝试使用 Selenium webdriver 在 Python 中构建一个网络爬虫,但是当我从 webdriver 检索网站源代码时,我无法访问我需要的信息。


我认为问题是一旦页面最初从服务器下载,内容就会通过 JavaScript 添加到页面中。当我运行时,browser.page_source我会在添加此内容之前获取页面的源代码。我想知道在添加了 JavaScript 加载的内容后是否可以获取页面的源代码(换句话说,我在使用 Inspect Element 查看页面时看到的内容)。


这是我正在使用的基本 Python 脚本:


from selenium import webdriver


browser = webdriver.Chrome()

browser.get("https://www.opportunities.auckland.ac.nz")

print(browser.page_source)

当我运行上面的脚本时,我得到了在浏览器中查看页面源时看到的页面的源代码(即,当使用检查元素查看代码时,没有可见的附加内容)。


我尝试过的事情


time.sleep(10)在我访问源时页面未完全加载的情况下添加到各个位置。

get_attribute("innerHTML")在身体上使用。

使用execute_script()让JS运行。

使用execute_script()使JS脚本运行一个接一个。

如果有人能首先告诉我这是否可行,以及它是否为我指明了正确的方向,那就太好了。谢谢。


更新 1


尝试 Piotrek 的解决方案时,我得到以下输出:


Warning (from warnings module):

  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/phantomjs/webdriver.py", line 49

warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

<html><head></head><body></body></html>

不幸的是,这似乎不起作用。


沧海一幻觉
浏览 102回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python