参考:https://zhuanlan.zhihu.com/p/30645747569

使用 Playwright 库

配置依赖

pip install playwright #安装 Playwright 库
python -m playwright install #安装 Playwright 所需的浏览器二进制文件

代码实现

from playwright.sync_api import sync_playwright
from PIL import Image
import os

import time

# 目标URL
url = os.path.join(os.path.dirname(__file__), 'xxx.html')
output_dir = os.path.dirname(url)

os.makedirs(output_dir, exist_ok=True)
screenshot_path = os.path.join(output_dir, "screenshot.png")
final_output_path = os.path.join(output_dir, "output_600dpi.png")

t1 = time.time()

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
    )
    page = context.new_page()
    page.goto(url)
    scroll_width = page.evaluate("document.body.scrollWidth")
    scroll_height = page.evaluate("document.body.scrollHeight")
    page.set_viewport_size({"width": scroll_width, "height": scroll_height})
    page.screenshot(path=screenshot_path, full_page=True)
    context.close()
    browser.close()

image = Image.open(screenshot_path)
image.info['dpi'] = (600, 600)
image.save(final_output_path, dpi=(600, 600))

os.remove(screenshot_path)
print(f"图片已保存到:{final_output_path}")
print(f"耗时:{time.time() - t1:.4}s")