You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests实现网站截图?求更优解决方案

高效网页截图解决方案

Requests 是 HTTP 请求库,仅能获取页面源码,无法渲染页面中的 JavaScript、CSS 等资源,所以没法直接实现截图。你当前的方案每次启动完整 Chrome 浏览器,资源消耗大,以下是几种更高效的替代方案:

1. Chrome Headless + Selenium

使用 Chrome 的无头模式(无需可视化窗口)配合 Selenium,资源占用远低于普通 Chrome 实例,同时保留完整的页面渲染能力。

步骤与代码:

  • 安装依赖:

    pip install selenium
    

    确保你的 Chrome 浏览器版本与 ChromeDriver 版本匹配(Selenium 4.6+ 可自动管理驱动)。

  • 截图代码:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    def capture_screenshot(url, save_path):
        # 配置无头模式参数
        chrome_options = Options()
        chrome_options.add_argument("--headless=new")
        chrome_options.add_argument("--disable-gpu")
        chrome_options.add_argument("--no-sandbox")  # 避免权限问题(Linux 环境常用)
        chrome_options.add_argument("--window-size=1920,1080")  # 设置截图分辨率
    
        driver = webdriver.Chrome(options=chrome_options)
        try:
            driver.get(url)
            # 可选:等待页面加载完成(比如等待元素或固定时长)
            # driver.implicitly_wait(5)
            driver.save_screenshot(save_path)
        finally:
            driver.quit()
    
    # 调用示例
    capture_screenshot("https://your-target-site.com", "screenshot.png")
    

2. Playwright

微软推出的自动化测试工具,支持多浏览器,自带驱动管理,API 更简洁,自动等待机制更智能,适合复杂页面截图。

步骤与代码:

  • 安装依赖:

    pip install playwright
    playwright install  # 自动下载所需浏览器(Chromium/Firefox/WebKit)
    
  • 截图代码:

    from playwright.sync_api import sync_playwright
    
    def capture_screenshot(url, save_path):
        with sync_playwright() as p:
            # 启动无头 Chromium
            browser = p.chromium.launch(headless=True)
            page = browser.new_page(viewport={"width": 1920, "height": 1080})
            page.goto(url)
            # 等待网络空闲(页面加载完成)
            page.wait_for_load_state("networkidle")
            # 可选:截取完整页面(而非可见区域)
            page.screenshot(path=save_path, full_page=True)
            browser.close()
    
    # 调用示例
    capture_screenshot("https://your-target-site.com", "full_page_screenshot.png")
    

3. Pyppeteer(Python 版 Puppeteer)

基于 Chrome DevTools 协议的轻量工具,无需依赖 Selenium,直接控制 Chromium,适合异步场景。

步骤与代码:

  • 安装依赖:

    pip install pyppeteer
    
  • 截图代码:

    import asyncio
    from pyppeteer import launch
    
    async def capture_screenshot(url, save_path):
        browser = await launch(headless=True, args=['--window-size=1920,1080'])
        page = await browser.newPage()
        await page.setViewport({'width': 1920, 'height': 1080})
        # 等待网络空闲后截图
        await page.goto(url, waitUntil='networkidle2')
        # 可选:截取完整页面
        await page.screenshot({'path': save_path, 'fullPage': True})
        await browser.close()
    
    # 调用示例
    asyncio.get_event_loop().run_until_complete(
        capture_screenshot("https://your-target-site.com", "pyppeteer_screenshot.png")
    )
    

方案对比

  • 若你已有 Selenium 使用经验,优先选 Chrome Headless + Selenium;
  • 追求简洁API和智能等待,选 Playwright;
  • 偏好轻量异步方案,选 Pyppeteer。

这些方案均无需启动可视化浏览器,带宽和资源消耗远低于你当前的临时方案,同时支持自定义截图参数,更适配爬虫场景。

内容的提问来源于stack exchange,提问作者Misterknow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:05:27