点此免费加入Python网络爬虫学习交流QQ群:428518750

Playwright提供了一个截屏的API:page.screenshot。使用该API,只需要指定截图的图片的保存路径及文件名即可。如果仅指定文件名,默认保存在当前目录。

官方API的文档地址:https://playwright.dev/python/docs/screenshots

截取当前屏幕

如果仅仅截取当前屏幕(浏览器)上能看到的部分,那么可以使用如下语法:

page.screenshot(path="截图保存路径")

示例:打开SQL网主页,然后截取当前屏幕内容,保存为一张图片。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
      browser = p.chromium.launch(headless=False)
      page = browser.new_page()
      page.goto('https://sql.wang')
      page.screenshot(path=f'screenshot1.png')
      
      page.wait_for_timeout(2000)
      browser.close()

截取整个页面

有时候,页面可能会比较长,一个屏幕无法全部展示出来。如果想截取整个页面,怎么办呢?

page.screenshot提供了full_page参数,语法如下:

page.screenshot(path="截图保存路径",full_page=True)

示例:打开SQL网主页,然后截取主页全部内容,保存为一张图片。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
      browser = p.chromium.launch(headless=False)
      page = browser.new_page()
      page.goto('https://sql.wang')
      page.screenshot(path=f'screenshot2.png',full_page=True)
      
      page.wait_for_timeout(2000)
      browser.close()

截取页面的一部分

有时候,我们可能只想截取页面的一部分,那么,Playwright也支持将想要截取的部分筛选出来,然后调用截图API进行截图。

示例:打开SQL网主页,截取页面部分,保存为一张图片。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
      browser = p.chromium.launch(headless=False)
      page = browser.new_page()
      page.goto('https://sql.wang')
      page.locator('.main-footer').screenshot(path=f'screenshot3.png')
      
      page.wait_for_timeout(2000)
      browser.close()

使用base64对图片数据进行加密、解密

除了可以将页面截图保存为图片之外,也可以使用base64对图片数据进行加密和解密,将图片转换为一串字符。

示例:截取页面后,转换为一串字符并输出。

import base64
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://sql.wang')
    screenshot_bytes = page.screenshot()
    print(base64.b64encode(screenshot_bytes).decode())
    
    page.wait_for_timeout(2000)
    browser.close()

点此免费加入Python网络爬虫学习交流QQ群:428518750

picture loss