我们使用联盟链接。它们让我们能够维持运营,而您无需承担任何费用。

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:哪个更好

先决条件和安装

剧作家。 该工具主要与 NodeJS 一起使用,因此请确保将其安装在您的系统上。您可以从 官方网站。要安装软件包,请打开终端或命令提示符。使用 npm(Node 包管理器)运行以下命令:
				
					npm install playwright

				
			
完成后,您可以将 Playwright 导入到您的 NodeJS 项目中并开始使用它。 硒。 根据您的浏览器,您需要将 WebDriver 添加到路径中。例如,如果您使用 Python 和 Chrome,请添加 Chrome WebDriver。要编写您的第一个 Selenium 脚本,请参阅 硒官方网站.

生态系统

剧作家。尽管 Playwright 相对较新,但它可以模拟三大浏览器组:Chromium、Firefox 和 WebKit。该工具有一个内置驱动程序,因此您不需要其他依赖项即可工作。它在编程语言方面也很灵活;Playwright 支持 JavaScript、TypeScript、Python、Java 和 .NET。为了避免被机器人检测到,您可以安装 Playwright 的软件包 剧作家—临时演员。 这样,您可以模仿人类行为,例如移动鼠标和键盘输入或处理 reCAPTCHA。 硒。 与 Playwright 相比,Selenium 是网络抓取领域的老大哥。话虽如此,但它的功能更强大。它可以控制 Chrome、Firefox、Safari、Internet Explorer、Opera 和其他浏览器。但是,您需要为每个浏览器安装一个 WebDriver。Selenium 支持大多数编程语言:Python、Ruby、NodeJS 和 Java。此外,它的 客户端语言绑定 允许您使用 PHP、Perl、Go、Dart、Haskell 和 R 进行设置。Selenium 有自己的包来伪造数字指纹。例如,使用 硒隐形 您可以旋转您的用户代理,操作 WebGL 属性和字体。

请求处理

剧作家。 该工具默认是异步的,但您也可以同步管理请求。这意味着它既适用于小型项目,也适用于大型项目。同步方法一次处理一个请求,因此您可以处理小型网页抓取任务。异步技术处理并发请求;当您需要抓取多个页面时,它效果最佳。

硒。 该框架主要处理同步请求。即使您可以同时(异步)定位多个网站,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:比较表

 剧作家
年份20202004
硬件需求网络驱动程序
浏览器支持Chromium、Firefox 和 WebKitChrome、Firefox、Microsoft Edge、Safari、Opera 等
编程语言TypeScript、JavaScript、Python、.NET、JavaPython、JavaScript、NodeJS、Java 以及其他具有语言绑定的语言
浏览器驱动程序内置驱动程序每个浏览器都有不同的 WebDriver
设置困难简便困难
学习曲线简便困难
性能快速比较慢
社區L大号
最适合从小型到大型项目中小型项目

Playwright 和 Selenium 的替代品

如果您正在寻找与 Playwright 和 Selenium 类似的东西,Puppeteer 是另一个不错的选择。它是一个 NodeJS 库,可让您控制 Chrome 浏览器。要了解更多信息,您可以阅读我们的指南,其中我们将 Puppeteer 与 Selenium 进行了比较。 

关于每种工具功能的指南。

您还可以将这两种工具与其他抓取库一起使用。例如,Requests 是一款出色的 HTML 抓取工具,而 Beautiful Soup 是您能找到的最好的解析器之一。我们还为您提供了帮助 - 我们准备了一份详尽的指南,解释了不同库(包括 Selenium 和 Playwright)之间的差异。 

熟悉主要的 Python 网络抓取库。

Adam Dubois 的图片
亚当·杜波依斯
代理极客和开发人员。