小能豆

使用 Python 获取 Selenium WebDriver 中 WebElement 的 HTML 源代码

javascript

我正在使用 Python 绑定来运行 Selenium WebDriver:

from selenium import webdriver
wd = webdriver.Firefox()

我知道我可以像这样抓住一个网络元素:

elem = wd.find_element_by_css_selector('#my-id')

我知道我可以通过以下方式获取完整的页面源代码......

wd.page_source

但是有没有办法获取“元素源”呢?

elem.source   # <-- returns the HTML as a string

Python 的 Selenium WebDriver 文档基本上不存在,并且我在代码中没有看到任何似乎可以启用该功能的内容。

访问元素 (及其子元素) 的 HTML 的最佳方法是什么?


阅读 42

收藏
2024-09-02

共1个答案

小能豆

要使用 Selenium WebDriver 获取特定元素的 HTML 源代码(包括其子元素),可以使用 get_attribute 方法并传递 "outerHTML" 属性。

如何获取元素的 HTML 源代码

以下是实现方法:

from selenium import webdriver

# 初始化 WebDriver(此处以 Firefox 为例)
wd = webdriver.Firefox()

# 打开网页
wd.get('http://example.com')

# 使用 CSS 选择器找到元素
elem = wd.find_element_by_css_selector('#my-id')

# 获取元素及其子元素的完整 HTML
element_html = elem.get_attribute('outerHTML')

print(element_html)

解释

  • find_element_by_css_selector:使用 CSS 选择器(此处为 #my-id)定位网页元素。
  • get_attribute('outerHTML'):获取元素及其子元素的序列化 HTML 内容,返回为字符串。

获取内部 HTML

如果只想获取元素内部的内容(不包括最外层的标签),可以使用 "innerHTML"

element_inner_html = elem.get_attribute('innerHTML')
print(element_inner_html)

总结

  • 使用 outerHTML 获取整个元素及其子元素的 HTML。
  • 使用 innerHTML 仅获取元素的内部内容。

这种方法可以直接获取元素的 HTML 源代码,而无需额外的库或复杂的代码。

2024-09-02