我正在使用 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 的最佳方法是什么?
要使用 Selenium WebDriver 获取特定元素的 HTML 源代码(包括其子元素),可以使用 get_attribute 方法并传递 "outerHTML" 属性。
get_attribute
"outerHTML"
以下是实现方法:
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
#my-id
get_attribute('outerHTML')
如果只想获取元素内部的内容(不包括最外层的标签),可以使用 "innerHTML":
"innerHTML"
element_inner_html = elem.get_attribute('innerHTML') print(element_inner_html)
outerHTML
innerHTML
这种方法可以直接获取元素的 HTML 源代码,而无需额外的库或复杂的代码。