可以使用 Selenium 的 DevTools API 来获取当前页面的完整 DOM 树。以下是一个示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 启动浏览器
service = Service('/path/to/chromedriver')
service.start()

# 配置 DevTools 参数
caps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'browser': 'ALL'}
options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', False)  # 必须禁用 W3C 协议
options.add_argument('--headless')  # 设置无头模式
options.add_argument('--disable-gpu')  # 禁用 GPU 加速

# 创建浏览器对象
driver = webdriver.Chrome(service=service, options=options, desired_capabilities=caps)

# 获取当前页面的完整 DOM 树
driver.get('https://example.com')
dom_tree = driver.execute_cdp_cmd('DOM.getDocument', {})

# 关闭浏览器
driver.quit()

这里使用了 Chrome 浏览器和 ChromeDriver 来演示,需要将 /path/to/chromedriver 替换为实际的 ChromeDriver 路径。同时需要安装 selenium 库和 chromedriver-binary 库。

上述代码中,我们先启动了 Chrome 浏览器,并配置了 DevTools 参数。然后创建了一个 ChromeDriver 对象,并通过 execute_cdp_cmd() 方法执行了 CDP 命令 DOM.getDocument 来获取当前页面的完整 DOM 树。最后关闭了浏览器。

注意,这里需要禁用 W3C 协议,因为 Selenium 的 DevTools API 目前不支持 W3C 协议。

这样,你就可以使用 Selenium 通过 CDP 获取当前页面的完整 DOM 树了。

Selenium 使用 CDP 获取页面完整 DOM 树

原文地址: https://www.cveoy.top/t/topic/plBW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录