You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用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

火山引擎 最新活动