简介
官方文档:https://playwright.dev/python/
playwright是一款自动化的测试工具,可以驱动浏览器进行各种操作,相对selenium来说,使用起来更加简答,安装也更加方便,版本要求如下:
- Python 3.8 或更高版本。
- Windows 10+、Windows Server 2016+ 或 Windows Subsystem for Linux (WSL)。
- macOS 13 Ventura 或 macOS 14 Sonoma。
- Debian 11、Debian 12、Ubuntu 20.04 或 Ubuntu 22.04、Ubuntu 24.04,基于 x86-64 和 arm64 架构。
安装
# 安装playwright
pip install playwright
# 安装驱动
playwright install
使用
playwright 支持同步和异步两种方式, 可以覆盖当前主流的浏览器,实现页面内容获取,长截图,指定元素截图,监听等功能,还可以通过命令行的方式自动生成代码。
同步代码
from playwright.sync_api import sync_playwright
with sync_playwright() as p: # 浏览器的上下文管理器
browser = p.chromium.launch(headless=True)
# 调用Chromium、Firefox 以及 Webkit 浏览器, 使用p.firefox、 p.webkit替换即可
# headless 表示无头访问,是否可以看到窗口
page = browser.new_page() # 打开一个新网页
page.goto('https://baijiahao.baidu.com/s?id=1772443491053425218&wfr=spider&for=pc') # 请求的网址
page.screenshot(path='scroll_top.png', full_page=True) # 长截图操作
# 下载页面内容
page.wait_for_load_state('networkidle')
content = page.content()
with open('baijiahao.html', 'w') as f:
f.write(content)
f.close()
browser.close()
异步代码
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.new_page()
await page.goto('https://baijiahao.baidu.com/s?id=1772443491053425218&wfr=spider&for=pc')
await page.screenshot(path='scroll_top.png', full_page=True)
await browser.close()
asyncio.run(main())