Puppeteer 与 Selenium:该使用哪一个?
我们比较了两个流行的无头浏览器库。
当谈到网页抓取 JavaScript 渲染的网站时,通常会想到 Puppeteer 和 Selenium。这两种工具都控制 无头浏览器 并且完全有能力处理动态页面。
但是,如果您是网页抓取新手,或者还没有尝试使用无头浏览器,您可能会想知道哪种工具更适合您的项目。本指南简要概述了每种工具的功能以及最佳使用时间。如果您时间紧迫,可以直接跳到最后的比较表。
Puppeteer – 快速且用户友好的工具
Puppeteer 是一个用于控制无头 Chrome 浏览器的 Node.js 库。该工具由 Google 的一个团队于 2018 年开发。尽管 Puppeteer 在该领域相对较新,但它的表现非常出色。
该库由 Chromium 开发人员提供支持,因此你始终 拥有最新的浏览器版本和功能。 但它仅支持 Chrome 和 Chromium,所以如果您不打算使用其他浏览器,Puppeteer 可能就是您所需要的。
工具 也可以是 完全自动化大多数浏览器交互 例如移动鼠标、填写表格、等待页面加载、截屏或获取 PDF 格式的页面。在所有功能中,您可以 将代理与 Puppeteer 集成。
像其他 网页抓取工具Puppeteer 有自己的技巧让你看起来像一个真正的用户。它 包含插件 喜欢 puppeteer-extra-plugin-stealth or puppeteer-extra-plugin-匿名化-ua 这将帮助你伪造你的数字指纹。 一些插件会轮换您的用户代理或标头,而其他插件会消除无头 Chrome 和真正的 Chrome 浏览器之间的细微差别。
在速度方面 Puppeteer 比 Selenium 快得多。 它使用 Chromium 内置的 DevTools 协议,允许您直接控制浏览器。该库占用的资源相对较轻,执行时间很快。
傀儡师是 易于使用。 与 Selenium 不同,它没有内置用于编写脚本的集成开发环境 (IDE),因此您可以使用自己选择的 IDE 与网站交互。这意味着您需要编写的代码更少。此外,安装过程也很简单 - 您只需安装 npm 或 yarn 包管理器并下载包即可。
Puppeteer 的文档组织良好,是初学者的绝佳选择。它拥有一个不断壮大的社区,因此您不会在 StackOverflow 等各种论坛上找不到答案。
简而言之,Puppeteer 是一款适合初学者的工具,占用资源少,维护良好。它包含所有必要的插件,可避免基于指纹的检测。但是,它仅与 Chromium 捆绑在一起。
Selenium – 适合高级用户的多功能工具
Selenium 于 2004 年推出,是业内的资深工具。它是一组主要用于 Web 测试和浏览器自动化的开源工具。但随着 JavaScript 的日益流行,网页抓取工具在处理动态网站方面发挥了重要作用。
Selenium 提供了一种以编程方式控制无头浏览器的方法。它可以截取屏幕截图,并以其他方式与页面交互。简而言之,Selenium 打开并转到目标网页。与此同时,它模仿人类的行为,因此 你不太可能被目标网站红旗标记 作为机器人。此外,Selenium 支持 代理集成,这会增加您获得更多成功请求的机会。
和 Puppeteer 一样,Selenium 也有自己的软件包,例如 硒隐形 防止指纹检测。经过正确配置,它可以通过机器人测试,处理 Google 帐户登录和 reCAPTCHA。
Selenium 最大的优点之一是 它可以模拟所有主流浏览器 比如 Chrome、Firefox 和 Microsoft Edge。因此,如果您的抓取工具在您选择的浏览器上表现不佳,您可以随时尝试其他浏览器。它也是 编程语言灵活 – 该工具可在 Java、Python、C#、Ruby、JavaScript 等上运行。
您需要安装 Web 驱动程序才能使用 Selenium 控制无头浏览器。这会显著降低速度并占用大量资源。因此,与 Puppeteer 相比, 图书馆的速度较慢,要求也更高。
更重要的是,硒 学习难度较高。 首先,它不是为网页抓取而构建的,因此使用起来比较困难。这使得该库对于初学者来说不是一个有吸引力的选择。
尽管有些人认为 Selenium 已经过时了,但它仍然非常流行,因此 你不会缺少社区的支持。 您可以在 StackOverflow 等平台上找到许多讨论以及有关如何使用该库的分步教程。
总而言之,如果您想使用 Chrome 以外的其他浏览器,或者您不习惯使用 Node.js 语言,则应该坚持使用 Selenium。否则,它会占用大量资源并且难以使用。
Selenium 与 Puppeteer 的比较
下面是一个简短的表格,并列显示了 Puppeteer 与 Selenium 的主要功能:
| 木偶戏 | 硒 | |
| 年份 | 2018 | 2004 |
| 支持的编程语言 | Node.js | Java、Python、C#、Ruby、JavaScript、Selenese、Kotlin |
| 支持的浏览器 | 铬系列 | Chrome、Firefox、Internet Explorer、Edge、Opera |
| 性能 | 快速 | 放慢 |
| 设置困难 | 简便 | 硬 |
| 能够生成 PDF | 是 | 没有 |
| 支持的操作系统 | Windows,Linux,macOS | Windows,Linux,macOS |
| 代理集成 | 是 | 是 |
| 最适合 | 从小型到大型项目 | 中小型项目 |