Playwright 与 Selenium 在网页抓取方面哪个更好?
让我们看看这两个流行的无头浏览器库的比较情况。
依赖于延迟加载或无限滚动等功能的动态网站是网络爬虫的眼中钉。有无数的工具可供选择,找到最合适的工具可能很棘手。这时 Playwright 和 Selenium 就可以拯救这一切了——它们都控制着 无头浏览器 并且完全能够呈现 JavaScript。
但如果您在这里,您可能会在两个选项之间做出选择。本文将指导您了解每种工具的具体细节以及何时最好使用它们。
使用无头浏览器进行网页抓取
使用无头浏览器进行网页抓取是使用不带图形用户界面的浏览器从网站提取数据的过程。想象一下 Chrome,但没有标签和 URL 栏或其他在后台运行的视觉元素。与从网站 HTML 收集数据的传统抓取工具不同,无头浏览器模拟人类行为并在后端呈现 JavaScript。
Selenium 和 Playwright 等无头浏览器因其能够像真实用户一样与动态网站交互的能力而广受欢迎。您可以自动执行诸如填写表格、截取屏幕截图、移动鼠标或等待页面加载等任务。此外,这两种工具都具有可以帮助您处理反机器人系统和隐藏浏览器指纹的软件包。
Playwright 与 Selenium 在网页抓取方面的对比
什么是剧作家?
Playwright 是一个主要用于端到端 Web 和应用测试的库。尽管微软发布该工具的时间并不长,但它也引起了 Web 抓取领域的关注。这是可以预见的,因为负责开发著名无头库 Puppeteer 的团队也是 Playwright 背后的推动力。
它最好的功能之一是跨浏览器功能。简而言之,它允许您使用单个 API 自动执行不同浏览器(如 Chromium(Google Chrome)、Firefox 或 WebKit(Safari))上的操作。
Playwright 还可以处理自动等待或使用自己的 cookie 分离浏览器实例等问题。当您需要模拟不同的用户或会话时,这会非常有用。
什么是硒?
Selenium 是一个广泛使用的测试和自动化 Web 浏览器的框架。该工具可让您查看 Web 应用在不同浏览器和版本上的运行情况。此外,它还可用于自动执行网站上的重复性任务,例如下载文件。
Selenium 还在网络抓取中发挥着重要作用。它允许开发人员以编程方式与网络应用程序交互,同时模仿用户操作,例如单击按钮、填写表单、在页面之间导航等。
当谈到网络抓取时,Selenium 有三个主要组件:
- Selenium WebDriver 是网页抓取的主要组件。它允许您控制网页浏览器并模仿用户操作。
- Selenium IDE(集成开发环境) 是一个具有记录和回放功能的浏览器扩展,有助于简化您的脚本。
- 硒网格 当你想要大规模或跨不同浏览器和操作系统进行抓取时使用。
Selenium 与 Playwright:哪个更好
先决条件和安装
npm install playwright
生态系统
请求处理
剧作家。 该工具默认是异步的,但您也可以同步管理请求。这意味着它既适用于小型项目,也适用于大型项目。同步方法一次处理一个请求,因此您可以处理小型网页抓取任务。异步技术处理并发请求;当您需要抓取多个页面时,它效果最佳。
硒。 该框架主要处理同步请求。即使您可以同时(异步)定位多个网站,Selenium 也会比 Playwright 占用更多资源,并减慢您的抓取速度。Selenium 需要为您抓取的每个网站配备一个完整的浏览器,因此它会使用更多的计算能力。在这种情况下,Playwright 更智能——它在网站之间共享浏览器。
性能
剧作家。该库控制整个无头浏览器,因此它需要比 Requests 等 HTTP 库更多的资源。但与 Selenium 相比,它要轻量得多。这是因为 Playwright 的架构不同。它使用在抓取时保持打开状态的 WebSocket 连接,因此您的请求会一次性发送。
硒。 Selenium 比 Playwright 慢得多。要使浏览器与其驱动程序交互,您必须安装 WebDriver API,它将信息转换为 JSON,然后发送 HTTP 响应。因此,您的请求是通过多个连接发送的。
数据解析
剧作家。 该库能够解析,因为它运行完整的浏览器。不幸的是,此选项有一些限制——与 Selenium 相比,解析器更容易中断。网页具有复杂的结构和经常变化的动态元素。而 Playwright 对这些头韵更敏感,因为它使用更激进的方法来呈现页面。
硒。 相比之下,Selenium 在清理数据方面比 Playwright 更宽松。但是,我们不会称其功能很好。因此,对于需要强大解析器的任务,您应该使用 Python 的 Beautiful Soup 库。
社区支持和文档
剧作家。 尽管 Playwright 在网络抓取市场起步较晚,但它已经引起了一些开发人员的关注。虽然它的社区比 Selenium 的社区小,但 Playwright 在官方网站上有非常好的文档。它包括指南、示例,你可以在 GitHub 上讨论任何问题。
硒。 该库比 Playwright 早 16 年,因此 Selenium 拥有更大的开发者和用户社区也就不足为奇了。您可以在 StackOverflow 等不同论坛上找到大量文档和问题的答案。
Playwright 与 Selenium:比较表
| 剧作家 | 硒 | |
| 年份 | 2020 | 2004 |
| 硬件需求 | – | 网络驱动程序 |
| 浏览器支持 | Chromium、Firefox 和 WebKit | Chrome、Firefox、Microsoft Edge、Safari、Opera 等 |
| 编程语言 | TypeScript、JavaScript、Python、.NET、Java | Python、JavaScript、NodeJS、Java 以及其他具有语言绑定的语言 |
| 浏览器驱动程序 | 内置驱动程序 | 每个浏览器都有不同的 WebDriver |
| 设置困难 | 简便 | 困难 |
| 学习曲线 | 简便 | 困难 |
| 性能 | 快速 | 比较慢 |
| 社區 | 中 | L大号 |
| 最适合 | 从小型到大型项目 | 中小型项目 |
Playwright 和 Selenium 的替代品
如果您正在寻找与 Playwright 和 Selenium 类似的东西,Puppeteer 是另一个不错的选择。它是一个 NodeJS 库,可让您控制 Chrome 浏览器。要了解更多信息,您可以阅读我们的指南,其中我们将 Puppeteer 与 Selenium 进行了比较。
关于每种工具功能的指南。
您还可以将这两种工具与其他抓取库一起使用。例如,Requests 是一款出色的 HTML 抓取工具,而 Beautiful Soup 是您能找到的最好的解析器之一。我们还为您提供了帮助 - 我们准备了一份详尽的指南,解释了不同库(包括 Selenium 和 Playwright)之间的差异。
熟悉主要的 Python 网络抓取库。