python playwright实现获取当前页面的截图

 更新时间:2025年12月01日 09:41:26   作者:weixin_46244623  
这篇文章主要为大家详细介绍了python playwright实现获取当前页面的截图的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

你可以使用 Playwright 来获取当前页面的截图。以下是一个示例代码:

import os
import sys
from playwright.sync_api import sync_playwright


def find_chrome_executable():
    """
    自动检测 Chrome / Chromium 在 Windows / macOS / Linux 平台的常见安装位置。
    找不到返回 None。
    """

    if sys.platform.startswith("win"):
        paths = [
            os.path.expandvars(r"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"),
            os.path.expandvars(r"%ProgramFiles%\Google\Chrome\Application\chrome.exe"),
            os.path.expandvars(r"%LocalAppData%\Google\Chrome\Application\chrome.exe"),
        ]

    elif sys.platform.startswith("darwin"):  # macOS
        paths = [
            "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
            "/Applications/Chromium.app/Contents/MacOS/Chromium",
        ]

    elif sys.platform.startswith("linux"):
        paths = [
            "/usr/bin/google-chrome",
            "/usr/bin/google-chrome-stable",
            "/usr/bin/chromium",
            "/usr/bin/chromium-browser",
            "/snap/bin/chromium",
        ]

    else:
        return None

    for path in paths:
        if os.path.exists(path):
            return path

    return None


def click_first_link_in_hotsearch_and_get_url():
    chrome_path = find_chrome_executable()

    if not chrome_path:
        print("❌ 未找到本地 Chrome,程序退出。")
        return

    print(f"✔ 使用本地 Chrome:{chrome_path}")

    with sync_playwright() as p:
        # 不允许 fallback 用内置 Chromium
        browser = p.chromium.launch(executable_path=chrome_path, headless=True)

        page = browser.new_page()
        page.goto('https://www.baidu.com')
        page.wait_for_load_state('load')

        hotsearch_selector = '#s-hotsearch-wrapper'
        page.wait_for_selector(hotsearch_selector)

        hotsearch_element = page.query_selector(hotsearch_selector)

        if hotsearch_element:
            first_link = hotsearch_element.query_selector("a")

            if first_link:
                url = first_link.get_attribute('href')
                print(f"第一个链接URL:{url}")

                page.goto(url)
                page.wait_for_load_state('load')

                screenshot_path = 'screenshot_after_click.png'
                page.screenshot(path=screenshot_path)

                print(f"截图已保存到 {screenshot_path}")
            else:
                print("热搜区未找到链接")
        else:
            print("页面上未找到热搜元素")

        browser.close()


if __name__ == '__main__':
    click_first_link_in_hotsearch_and_get_url()


在这个示例中,page.screenshot() 方法用于获取当前页面的截图,并将其保存到指定的文件路径(screenshot.png)。确保替换 ‘https://www.baidu.com’ 为你想要截图的实际网址。如果你希望在截图后不关闭浏览器,记得注释掉 browser.close() 部分。

注意:截图之前最好等待页面加载完成,以确保获取到完整的页面截图。在这个示例中,使用了 page.wait_for_load_state(‘load’) 来等待页面加载完成,但你可能需要根据实际情况调整等待的条件。

知识扩展

下面我们来看看如何利用Playwright库在Python中进行屏幕截图、截取全页面长图以及特定元素的截图。

捕获屏幕截图保存

page.screenshot(path="screenshot.png")

代码如下(示例):

from playwright.sync_api import sync_playwright



with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://blog.csdn.net/weixin_44688529?spm=1010.2135.3001.5343")
    print(page.title())
    page.screenshot(path="screenshot.png")

截长图

page.screenshot(path="screenshot.png", full_page=True)

代码如下(示例):

from playwright.sync_api import sync_playwright



with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://blog.csdn.net/weixin_44688529?spm=1010.2135.3001.5343")
    print(page.title())
    page.screenshot(path="screenshot.png", full_page=True)

截取单个元素

先定位到需要截图的元素,再截图保存

from playwright.async_api import Playwright
from playwright.sync_api import sync_playwright

def run(playwright: Playwright):
    # 启动 chromium 浏览器
    browser = p.chromium.launch(headless=False,slow_mo=1000)
    context = browser.new_context()
    # 打开一个标签页
    page = context.new_page()
    # 打开百度
    page.goto("http://192.168.64.209:8008/#/login")
    # 打印当前页面title
    print(page.title())
    page.locator(".s-canvas").screenshot(path="example.png")

到此这篇关于python playwright实现获取当前页面的截图的文章就介绍到这了,更多相关 playwright获取截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python机器学习之决策树

    Python机器学习之决策树

    这篇文章主要介绍了Python机器学习之决策树,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • python基础教程之基本内置数据类型介绍

    python基础教程之基本内置数据类型介绍

    在Python程序中,每个数据都是对像,每个对像都有自己的一个类型。不同类型有不同的操作方法,使用内置数据类型独有的操作方法,可以更快的完成很多工作
    2014-02-02
  • opencv+python识别七段数码显示器的数字(数字识别)

    opencv+python识别七段数码显示器的数字(数字识别)

    本文主要介绍了opencv+python识别七段数码显示器的数字(数字识别),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • pycharm中执行.sh文件的方法步骤

    pycharm中执行.sh文件的方法步骤

    本文主要介绍了pycharm中执行.sh文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python中判断对象是否为空的方法

    Python中判断对象是否为空的方法

    在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精准区分,本文将系统梳理Python中“空”的判定逻辑,揭示常见误区,并提供实用解决方案,需要的朋友可以参考下
    2025-04-04
  • darknet框架中YOLOv3对数据集进行训练和预测详解

    darknet框架中YOLOv3对数据集进行训练和预测详解

    这篇文章主要为大家介绍了darknet框架中YOLOv3对数据集进行训练和预测使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • python ftplib上传文件名乱码的解决办法

    python ftplib上传文件名乱码的解决办法

    本文主要介绍了python ftplib上传文件名乱码的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 浅谈python新式类和旧式类区别

    浅谈python新式类和旧式类区别

    python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。这篇文章主要介绍了浅谈python新式类和旧式类区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python 虚拟环境调用allure报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件

    python 虚拟环境调用allure报错:FileNotFoundError: [WinError

    python代码调用命令行 allure命令报错,提示找不到allure这个命令,本文就详细的介绍了具体的解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • JupyterNotebook 如何调整输出窗口的显示效果

    JupyterNotebook 如何调整输出窗口的显示效果

    这篇文章主要介绍了JupyterNotebook 输出窗口的显示效果调整实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论