3

我想加快 selenium 页面的加载时间,因为我只需要 HTML(我正在尝试使用 BeautifulSoup 抓取所有链接)。使用 PageLoadStrategy.NONE 并不能抓取所有链接,Chrome 也不再支持 PageLoadStrategy.EAGER。有谁知道在 python 中获取 PageLoadStrategy.EAGER 的解决方法?

4

2 回答 2

4

ChromeDriver是实现WebDriver 的Chromium有线协议的独立服务器。ChromeChromium仍在实施和转向W3C 标准的过程中。目前ChromeDriver可用于 Android 版 Chrome 和桌面版 Chrome(Mac、Linux、Windows 和 ChromeOS)。

根据当前的WebDriver W3C Editor's Draft以下是将pageLoadStrategy 能力关键字链接到页面加载策略状态的页面加载策略表,并显示与其对应的文档就绪状态:

页面加载策略

但是,如果您观察 ChromeDriver 的当前实现 Chrome DevTools确实会考虑以下document.readyStates

  • document.readyState == 'complete'
  • document.readyState == 'interactive'

这是一个示例相关日志:

[1517231304.270][DEBUG]: DEVTOOLS COMMAND Runtime.evaluate (id=11) {
   "expression": "var isLoaded = document.readyState == 'complete' ||    document.readyState == 'interactive';if (isLoaded) {  var frame = document.createElement('iframe');  frame.name = 'chromedriver dummy frame'; ..."
}

根据WebDriver 状态,您将根据WebDriver 规范中的内容找到所有WebDriver 命令的列表及其在ChromeDriver中的当前支持。一旦从各个方面完成实施PageLoadStrategy.EAGER必然会在Chrome 驱动程序中出现功能。

于 2018-06-29T08:26:11.930 回答
1

您只使用normalornone作为pageLoadStrategyin chromdriver。因此,要么自己选择none并处理所有事情,要么像通常那样等待页面加载

于 2018-06-28T17:52:31.550 回答