Python中使用Selenium WebDriver如何实现整个页面的截图?

网上看的的例子,
中文的也就这个页面例子为主了,其它 blog 什么的,都是转载这个的:
https://blog.csdn.net/miaomiao_zhang/article/details/86237195
如果是用 webdriver.Ie(),是否有例子可以看看怎么实现整个页面,需要几个 PageDwon 才能看完的截图?
Python中使用Selenium WebDriver如何实现整个页面的截图?


4 回复

我知道有截图 api 但是忘了。。。


from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time

def capture_full_page_screenshot(url, save_path):
    """
    捕获整个网页的完整截图
    
    参数:
        url: 要截图的网页URL
        save_path: 截图保存路径(包含文件名,如'screenshot.png')
    """
    # 设置Chrome选项
    chrome_options = Options()
    chrome_options.add_argument('--headless')  # 无头模式,不显示浏览器窗口
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox')
    
    # 初始化WebDriver
    service = Service('chromedriver的路径')  # 需要替换为你的chromedriver路径
    driver = webdriver.Chrome(service=service, options=chrome_options)
    
    try:
        # 访问网页
        driver.get(url)
        time.sleep(2)  # 等待页面加载
        
        # 获取页面总高度
        total_height = driver.execute_script("return document.body.scrollHeight")
        
        # 设置浏览器窗口大小为页面总高度
        driver.set_window_size(1920, total_height)
        
        # 等待一下确保页面渲染完成
        time.sleep(1)
        
        # 保存截图
        driver.save_screenshot(save_path)
        print(f"截图已保存到: {save_path}")
        
    finally:
        # 关闭浏览器
        driver.quit()

# 使用示例
if __name__ == "__main__":
    # 示例:截图百度首页
    capture_full_page_screenshot(
        url="https://www.baidu.com",
        save_path="baidu_full_page.png"
    )

这个方法的关键点:

  1. document.body.scrollHeight获取页面总高度
  2. 把浏览器窗口高度设为页面总高度
  3. save_screenshot()保存截图

注意:需要先安装selenium(pip install selenium)并下载对应浏览器版本的webdriver。

简单说就是获取页面高度然后调整窗口大小再截图。

webdriver.ie()折腾不了,结题了。。

browser = webdriver.Chrome(‘D:\ProgramFiles\chromedriver-74.exe’)
browser.save_screenshot(‘printscreen.png’)

回到顶部