提到无头浏览器(Headless Browser),大家首先想到的可能是 Google 出品的 Puppeteer。不过 Puppeteer 是 Node.js 库,对于 Python 开发者来说,直接调用有些麻烦。好在社区移植了一个 Python 版本——Pyppeteer。
虽然现在 Playwright 势头正猛,但 Pyppeteer 在一些老项目中依然有一席之地。本文简单记录一下 Pyppeteer 的使用方法。
什么是 Pyppeteer?
Pyppeteer 是 Puppeteer 的非官方 Python 移植版。它通过 DevTools Protocol 控制 Chromium/Chrome 浏览器。与 Selenium 相比,它不需要配置复杂的 WebDriver,安装即可使用。
安装
|
注意:Pyppeteer 默认会自动下载 Chromium,如果下载速度慢,可以手动指定下载源或使用本地 Chrome。
基本使用
Pyppeteer 是完全基于 Python 的 asyncio 编写的,所以使用它必须了解 Python 的异步编程。
|
常见坑点
- Chromium 下载慢:Pyppeteer 首次运行时会下载 Chromium,国内网络可能超时。可以通过设置环境变量解决,或者手动下载并指定
executablePath。 - 被网站检测:默认情况下,Pyppeteer 启动的浏览器会带有
webdriver特征,容易被反爬虫识别。可以通过以下代码隐藏特征:
|
总结
Pyppeteer 让 Python 开发者也能享受到 Puppeteer 的强大功能。虽然目前维护状态不如 Playwright 活跃,但如果你需要一个轻量级的、基于 CDP 协议的自动化工具,它依然是一个不错的选择。
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客!