playwright--screenshot 截图


前言

playwright可以截当前屏幕、截长图、对某个元素截图

捕获屏幕截图保存

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")

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在高版本的Pyecharts中,`page.render`方法已经被废弃,取而代之的是`render`方法。同时,Pyecharts中也没有提供`Page.save_resize_html`函数,但我们可以使用Puppeteer自带的`page.screenshot`方法和`sharp`库来实现类似的功能。具体实现如下: ```python import asyncio import pyppeteer import shutil from PIL import Image from io import BytesIO import os async def save_resize_html(page, path, width, height): """ 保存并调整页面截图的大小 """ # 使用page.screenshot方法截图 screenshot = await page.screenshot(fullPage=True) # 将截图转换为PIL.Image对象 image = Image.open(BytesIO(screenshot)) # 调整图片大小 resized_image = image.resize((width, height)) # 保存调整后的图片 with open(path, 'wb') as f: resized_image.save(f, format='PNG') async def main(): # 初始化浏览器 browser = await pyppeteer.launch() page = await browser.newPage() # 设置页面大小 await page.setViewport({'width': 800, 'height': 600}) # 加载Pyecharts生成的图表 chart = Line() chart.add_xaxis(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]) chart.add_yaxis("A", [1, 2, 3, 4, 5, 6, 7]) await page.setContent(chart.render_embed()) # 保存并调整页面截图的大小 await save_resize_html(page, './resized.png', 800, 600) # 关闭浏览器 await browser.close() if __name__ == '__main__': asyncio.get_event_loop().run_until_complete(main()) ``` 在上述代码中,我们首先使用`pyppeteer`库启动一个浏览器,并创建一个新的页面。然后,我们设置页面大小,并使用`page.setContent`方法加载Pyecharts生成的图表。接着,我们使用自定义的`save_resize_html`函数截取页面截图,并调整其大小,并将调整后的图片保存到本地。最后,我们关闭浏览器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值