如何使用Python截取浏览器网页完整全屏截图(含可视区域下方)
Python实现网页完整全屏截图方案
方法1:优化Selenium实现完整截图
你已经在用Selenium,只需调整窗口尺寸匹配页面实际高度,就能截取完整页面,无需额外工具包。
步骤要点:
- 用JavaScript获取页面的完整宽高
- 将浏览器窗口设置为该尺寸后再截图
- 若页面存在滚动加载内容,先触发滚动等待加载完成
示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time options = Options() options.add_argument("--headless=new") # 无头模式,不需要可视化窗口时开启 driver = webdriver.Chrome(options=options) # 打开目标网页 driver.get("https://example.com") # 滚动到底部触发动态加载(如果页面有滚动加载内容) driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) # 根据页面加载速度调整等待时间 # 获取页面完整宽高 page_width = driver.execute_script("return document.body.scrollWidth") page_height = driver.execute_script("return document.body.scrollHeight") # 设置浏览器窗口为页面完整尺寸 driver.set_window_size(page_width, page_height) # 保存完整截图 driver.save_screenshot("full_page_selenium.png") driver.quit()
方法2:使用Playwright(推荐,更稳定)
Playwright是微软推出的自动化工具,原生支持完整页面截图,无需手动调整窗口,对动态加载、长页面的处理更省心。
- 安装依赖:
pip install playwright playwright install # 安装浏览器驱动
- 示例代码:
from playwright.sync_api import sync_playwright with sync_playwright() as p: # 启动浏览器,headless=True表示无头模式 browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto("https://example.com") # full_page=True参数自动截取完整页面 page.screenshot(path="full_page_playwright.png", full_page=True) browser.close()
方法3:使用Pyppeteer(基于Puppeteer的Python封装)
Pyppeteer是Chrome官方工具Puppeteer的Python版本,同样支持完整页面截图,采用异步方式运行。
- 安装依赖:
pip install pyppeteer
- 示例代码:
import asyncio from pyppeteer import launch async def capture_full_screenshot(): browser = await launch(headless=True) page = await browser.newPage() await page.goto("https://example.com") # fullPage=True截取完整页面 await page.screenshot({"path": "full_page_pyppeteer.png", "fullPage": True}) await browser.close() asyncio.get_event_loop().run_until_complete(capture_full_screenshot())
总结
- 若已在使用Selenium,优先尝试方法1,无需额外安装工具;
- 处理复杂页面(动态加载、超长页面)时,Playwright是更稳定的选择,代码更简洁;
- Pyppeteer适合熟悉异步编程的场景。
内容的提问来源于stack exchange,提问作者thomas kayll
相关产品推荐
相关产品推荐

