本文目录导读:

Puppeteer 是一个基于 Node.js 的浏览器自动化库,主要用于控制 Chrome/Chromium 浏览器,如果你在寻找 Python 生态系统中的替代品,以下是最主流的几个选择,它们功能类似(无头浏览器、截图、PDF 生成、网络请求拦截、自动化测试等):
Playwright for Python(强烈推荐)
- 类型:官方 Python 端口(微软维护)
- 特点:
- 支持 Chromium、Firefox、WebKit 三引擎(Puppeteer 仅 Chrome)。
- API 更现代化,支持自动等待、网络拦截(route)、移动端模拟、定位器(locator)等。
- 自带
playwright install自动下载浏览器。 - 比 Puppeteer 更稳定,能处理动态内容、iframe、Shadow DOM 等。
- 适用场景:
- 跨浏览器测试(Chrome、Firefox、Safari)
- 复杂交互(点击、输入、拖拽、文件上传)
- 需要高稳定性的自动化任务(爬虫、监控)
- 安装:
pip install playwright playwright install
示例:截图并拦截图片
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.route("**/*.{png,jpg,jpeg}", lambda route: route.abort()) # 拦截图片
page.goto("https://example.com")
page.screenshot(path="example.png")
browser.close()
Selenium(经典但稍慢)
- 类型:通用浏览器自动化框架(支持多语言)
- 特点:
- 支持所有主流浏览器(Chrome、Firefox、Edge、Safari、IE 等)。
- 每个浏览器需要对应驱动(如 ChromeDriver、GeckoDriver)。
- 社区庞大,但 API 较旧,内置等待机制较弱(需手动
WebDriverWait)。 - 对于现代 SPA(单页应用)和 Shadow DOM 支持不如 Playwright。
- 适用场景:
- 需要与旧版浏览器(如 IE)兼容。
- 已有 Selenium 基础设施的项目。
- 使用 Python + Selenium Grid 做分布式测试。
- 安装:
pip install selenium # 下载对应驱动(如 chromedriver)并加入 PATH
示例:打开百度并搜索
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element(By.NAME, "wd").send_keys("Playwright")
driver.find_element(By.ID, "su").click()
driver.quit()
Pyppeteer(Puppeteer 的非官方 Python 移植)
- 类型:Puppeteer 的 Python 重写(基于 asyncio)
- 特点:
- API 与 Puppeteer 高度相似(类名、方法名几乎相同)。
- 仅支持 Chromium(通过
pyppeteer安装)。 - 需要熟悉
async/await写法。 - 维护较慢,更新滞后于上游 Puppeteer,部分较新功能(如网络拦截增强)可能缺失。
- 适用场景:
- 从 Puppeteer 迁移到 Python 的最小改动需求。
- 纯异步环境(如配合 FastAPI 集成)。
- 安装:
pip install pyppeteer
示例:截图并关闭浏览器
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('https://example.com')
await page.screenshot({'path': 'example.png'})
await browser.close()
asyncio.run(main())
其他小众选择
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Splash(Scrapy 配合) | 基于 Lua 脚本控制 Chromium,需独立部署 Docker 实例。 | 与 Scrapy 爬虫框架深度集成。 |
| CasperJS(已停止维护) | 旧版 PhantomJS 的替代品,不推荐用于新项目。 | 遗留项目的维护。 |
| DrissionPage | 国产库,融合 Selenium 和 requests 特性,支持直连与浏览器混合操作。 | 模拟登录、数据采集等需要快速切换请求/浏览器的场景。 |
如何选择?(
| 需求 | 推荐工具 |
|---|---|
| 跨浏览器支持(Chrome/Firefox/WebKit) | Playwright for Python |
| 从 Node.js Puppeteer 迁移,保持 API 相似 | Pyppeteer(仅 Chrome) |
| 已有 Selenium 生态(如 Selenium Grid、旧浏览器) | Selenium |
| 需要最高稳定性 + 现代 Web 特性(如 Shadow DOM) | Playwright for Python |
| 纯异步 + 与 Node.js 版 Puppeteer 体验一致 | Pyppeteer |
推荐:除非你有特殊限制(如必须用 Selenium 或旧版浏览器),否则 Playwright for Python 是功能最全、最现代的替代品,且微软有长期维护保障。