Pyppeteer 是 Puppeteer 的 Python 实现。Puppeteer 是谷歌开发的一个 Node 库,它提供了一个高级API 来通过 DevTools 协议控制 Chromium 或 Chrome。Pyppeteer 默认以 headless模式运行,但是可以通过修改配置文件运行“有头”模式。
能做什么呢?
- 生成页面的截图和 PDF。
- 抓取 SPA (单页应用程序)并渲染页面
- 自动提交表单,UI 测试,键盘输入等。
- 创建一个时时更新的自动化测试环境。
- 捕捉异常跟踪堆栈来帮助诊断性能问题。
- 高级功能如 js 注入、模拟操作、异步执行、伪装
Pyppeteer API 是分层次的,反映了浏览器结构
注释:
- Pyppeteer 使用 DevTools 协议 与浏览器进行通信。
- Browser 实例可以拥有浏览器。
- BrowserContext 浏览器上下文。
- Page 至少有一个框架:主框架。可能还有其他框架由 iframe 或 框架标签 创建。
- frame 至少有一个执行上下文 - 默认的执行上下文 - 框架的 JavaScript 被执行。一个框架可能有额外的与 扩展
关联的执行上下文。 - Worker 具有单一执行上下文,并且便于与 WebWorkers 进行交互。
Pyppeteer 的结构,也是代码的顺序结构;
import asyncio
from pyppeteer import launch
async def main():
# 启动,返回 browser
browser = await launch({
'headless'