【问题标题】:Selenium Javascript generated HTML incomplete, even with document.body.innerHTML [duplicate]Selenium Javascript 生成的 HTML 不完整,即使使用 document.body.innerHTML [重复]
【发布时间】:2018-03-11 21:56:46
【问题描述】:

我正在尝试从加载后/加载时由 javascript 修改的网页获取 HTML。我已按照this tutorial 中的说明进行操作。并且在最初加载页面后,我在我的 Python 代码中使用了这样的命令

html = browser.execute_script("return document.body.innerHTML")

虽然这似乎获得了我尝试过的其他页面上的所有 HTML Selenium 元素,但它似乎不适用于 this page。如果您打开该页面并检查 HTML,您可以看到所有 HTML 已加载。我想捕捉下面的元素,但不能。顺便说一句,WebDriverWait 似乎也不起作用......

<b>
  <a href="contractor_list.asp?alpha=A">A&nbsp;</a>
  <a href="contractor_list.asp?alpha=B">B&nbsp;</a>
  <a href="contractor_list.asp?alpha=C">C&nbsp;</a>
  <a href="contractor_list.asp?alpha=D">D&nbsp;</a>
  ...

如何让 Selenium 向我公开这些元素,以便我可以访问它们?或者,我应该为此使用其他工具吗?

【问题讨论】:

  • 感谢与此相关的其他 SO 问题的链接。在发帖之前我试图找到一个相关的问题,但当时不知道我应该使用“iframe”作为我的搜索关键字之一。

标签: javascript python html selenium web-scraping


【解决方案1】:

这些元素包含在 iframe 元素中,这就是您无法与它们交互的原因。如果可能,请尝试在 iframe 的源上运行脚本。

【讨论】:

  • 如何在该元素上显式运行脚本以公开其余元素?
  • 我不认为这是可能的,实际上。我记得过去曾经使用过 Selenium,但也遇到过几次完全相同的问题。不幸的是,您只需要手动检查元素,找到 iframe,获取其源代码,然后访问该特定页面并从那里运行您的 Selenium 脚本。也许可以自动化这个过程?不幸的是,已经有几年了,所以对于设置适当的自动化,我真的没有任何建议。
猜你喜欢
  • 2011-10-04
  • 2012-01-25
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多