Python selenium 获取 html 参考代码

本文介绍了如何使用Python的webdriver.Chrome库通过XPath获取网页的outerHTML属性,展示了从百度首页抓取HTML代码的过程。
# 用 outerHTML 属性 来获取
driver = webdriver.Chrome('自己的chromedriver.exe路径')
driver.get(‘http://www.baidu.com’)
driver.find_element_by_xpath('//html').get_attribute('outerHTML')
print("HTML code:\n", html)

结果如下:

<html><head></head><body>xxxx</body></html>
在使用 PythonSelenium 获取动态生成的 HTML 内容时,可以通过 `WebDriver` 对象加载页面并等待 JavaScript 执行完毕后,再获取最终渲染完成的页面内容。Selenium 会模拟浏览器行为,包括执行 JavaScript 脚本、处理 AJAX 请求等,从而确保获取到完整的动态内容。 ### 获取动态生成的 HTML 内容 可以使用以下代码示例来获取动态加载后的完整 HTML 内容: ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time # 初始化 WebDriver(以 Chrome 为例) service = Service(executable_path='/path/to/chromedriver') driver = webdriver.Chrome(service=service) # 打开目标网页 driver.get("https://example.com") # 等待页面加载完成,可以根据实际需要调整等待时间或使用显式等待 time.sleep(5) # 或者使用 WebDriverWait 来等待某个元素出现 # 获取完整的页面 HTML html_content = driver.page_source # 输出 HTML 内容 print(html_content) # 关闭浏览器 driver.quit() ``` ### 使用封装类简化操作 参考引用中提到的 `Tool` 类可以进一步扩展,用于封装常用操作如查找元素、点击按钮、输入文本等[^1]。例如,在动态页面中触发某些交互后再获取 HTML: ```python class Tool: def __init__(self, driver): self.driver = driver def find(self, locator): return WebDriverWait(self.driver, 10).until(lambda d: d.find_element(*locator)) def click(self, locator): self.find(locator).click() def get_page_source(self): return self.driver.page_source ``` 通过调用该类的方法,可以在点击“加载更多”按钮等交互后获取更新后的 HTML 内容。 ### 处理 AJAX 加载和异步请求 如果页面依赖 AJAX 或其他异步请求加载数据,建议使用 `WebDriverWait` 显式等待关键元素出现,而不是固定等待时间: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待特定元素加载完成 wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, 'dynamic-content-id'))) # 此时再获取页面源码,确保动态内容已加载 html_content = driver.page_source ``` 这种方法比使用 `time.sleep()` 更加高效和可靠。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安得权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值