如何使用Python版Selenium提高全屏截图的分辨率?
如何用Python Selenium提升全屏截图分辨率
当然可以解决这个问题!你现在用maximize_window()截出来的图分辨率低,本质是因为窗口大小被你的显示器分辨率限制住了。下面给你几个靠谱的方法,帮你拿到高分辨率的全屏截图:
1. 手动设置高分辨率窗口尺寸
直接跳过maximize_window(),用set_window_size()设置一个远超你显示器的分辨率(比如4K、甚至8K,只要你的机器性能允许)。这样浏览器会渲染出对应分辨率的页面,截图自然更清晰。
代码示例:
from selenium import webdriver # 注意路径用原始字符串,避免Python转义问题 browser = webdriver.Chrome(r'C:\Python27\chromedriver.exe') # 设置4K分辨率窗口 browser.set_window_size(3840, 2160) browser.get("http://www.google.com") browser.save_screenshot("high_res_screenshot.png") browser.quit()
2. 用无头模式突破显示器限制
如果你的机器没有图形界面(比如服务器环境),或者不想弹出浏览器窗口,无头模式是绝佳选择——它可以不受显示器分辨率约束,轻松设置超大窗口尺寸。
代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 启用无头模式(新版Chrome用--headless=new,旧版可以只写--headless) chrome_options.add_argument("--headless=new") # 设置目标分辨率 chrome_options.add_argument("--window-size=3840,2160") # 可选:禁用GPU加速,避免部分渲染异常 chrome_options.add_argument("--disable-gpu") browser = webdriver.Chrome(r'C:\Python27\chromedriver.exe', options=chrome_options) browser.get("http://www.google.com") browser.save_screenshot("headless_high_res.png") browser.quit()
3. 截取完整页面的高分辨率截图
如果需要的是整个页面(不止浏览器可见区域)的高分辨率截图,可以先通过JS获取页面实际宽高,再把窗口调整到对应尺寸,这样就能截到完整清晰的页面。
代码示例:
from selenium import webdriver browser = webdriver.Chrome(r'C:\Python27\chromedriver.exe') browser.get("http://www.google.com") # 用JavaScript获取页面的实际滚动宽高 page_width = browser.execute_script("return document.body.scrollWidth") page_height = browser.execute_script("return document.body.scrollHeight") # 把窗口大小设置成页面的实际尺寸 browser.set_window_size(page_width, page_height) browser.save_screenshot("full_page_high_res.png") browser.quit()
小提示
- 如果你的Python 2.7搭配的Selenium版本比较老,可能需要调整参数(比如旧版Chrome无头模式只用
--headless),建议尽量匹配对应版本的文档。 - 分辨率越高,截图文件越大,根据你的需求选择合适的尺寸就好。
- 部分网站会根据窗口大小自适应布局,过大的尺寸可能导致页面排版变形,建议先测试合适的分辨率。
内容的提问来源于stack exchange,提问作者sprogissd




