深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

2024 桐庐半程马拉松
00:00:00
时间
0.00
距离(公里)
--:--
配速
--
步频
--
心率 (bpm)
--
配速
步频
|
share-image
ESC

Python 版 Puppeteer:Pyppeteer 使用心得

提到无头浏览器(Headless Browser),大家首先想到的可能是 Google 出品的 Puppeteer。不过 Puppeteer 是 Node.js 库,对于 Python 开发者来说,直接调用有些麻烦。好在社区移植了一个 Python 版本——Pyppeteer

虽然现在 Playwright 势头正猛,但 Pyppeteer 在一些老项目中依然有一席之地。本文简单记录一下 Pyppeteer 的使用方法。

什么是 Pyppeteer?

Pyppeteer 是 Puppeteer 的非官方 Python 移植版。它通过 DevTools Protocol 控制 Chromium/Chrome 浏览器。与 Selenium 相比,它不需要配置复杂的 WebDriver,安装即可使用。

安装

pip install pyppeteer

注意:Pyppeteer 默认会自动下载 Chromium,如果下载速度慢,可以手动指定下载源或使用本地 Chrome。

基本使用

Pyppeteer 是完全基于 Python 的 asyncio 编写的,所以使用它必须了解 Python 的异步编程。

import asyncio
from pyppeteer import launch

async def main():
# 启动浏览器
# devtools=True 可以开启调试窗口
browser = await launch(headless=False)
page = await browser.newPage()

# 设置页面视图大小
await page.setViewport({'width': 1280, 'height': 800})

await page.goto('https://www.baidu.com')

# 截图
await page.screenshot({'path': 'baidu.png'})

# 获取内容
content = await page.content()
print(content[:100])

await browser.close()

asyncio.get_event_loop().run_until_complete(main())

常见坑点

  1. Chromium 下载慢:Pyppeteer 首次运行时会下载 Chromium,国内网络可能超时。可以通过设置环境变量解决,或者手动下载并指定 executablePath
  2. 被网站检测:默认情况下,Pyppeteer 启动的浏览器会带有 webdriver 特征,容易被反爬虫识别。可以通过以下代码隐藏特征:
await page.evaluateOnNewDocument('''() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
}''')

总结

Pyppeteer 让 Python 开发者也能享受到 Puppeteer 的强大功能。虽然目前维护状态不如 Playwright 活跃,但如果你需要一个轻量级的、基于 CDP 协议的自动化工具,它依然是一个不错的选择。

文章作者:阿文
文章链接: https://www.awen.me/post/3659a0db.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2021-03-20 14:30 发布,已超过半年(1823天),请注意甄别内容是否已过期。

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

选择联系方式

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️