使用 Playwright 在 Ruby 中进行网络爬取

Anh Tuan
Data Science Expert
08-Oct-2024
网页抓取已成为从网站收集数据的必要技能,无论是用于市场分析、学术研究还是任何数据驱动的项目。Playwright 是一款出色的浏览器自动化工具,可用于高效地抓取网站,并支持多种语言,包括 Ruby。在本指南中,我们将逐步介绍如何在 Ruby 中设置和使用 Playwright 抓取网站,以 quotes.toscrape.com 为例。
什么是 Playwright?
Playwright 是一款现代的 Web 测试自动化框架,类似于 Selenium,但执行速度更快,并支持所有现代浏览器,如 Chromium、Firefox 和 WebKit。它提供强大的浏览器自动化工具,用于无头和有头抓取、页面导航、与表单交互等等。
为什么将 Playwright 与 Ruby 结合使用?
Ruby 是一种流行的语言,以其简单性和开发者友好的语法而闻名。通过将 Playwright 与 Ruby 结合使用,您可以利用现代浏览器自动化的强大功能,同时保持 Ruby 清晰易读的代码结构。Playwright 非常适合网页抓取,因为它速度快、内置了等待条件,并且能够处理由 JavaScript 加载的动态内容。
在 Ruby 中设置 Playwright
要开始使用 Playwright 在 Ruby 中进行抓取,您需要设置一些东西:
1. 安装 Ruby
确保您的机器上安装了 Ruby。您可以通过在终端中运行以下命令来检查:
bash
ruby -v
如果未安装 Ruby,您可以通过 rbenv 或直接从 Ruby 的官方网站 安装它。
2. 安装 Playwright gem
接下来,您需要安装 playwright-ruby-client gem。该 gem 为 Ruby 提供了 Playwright 绑定,使您可以以编程方式与浏览器交互。
运行以下命令来安装 gem:
bash
gem install playwright-ruby-client
3. 安装浏览器
安装 gem 后,您需要安装 Playwright 支持的浏览器。运行以下命令:
bash
playwright install
这将下载 Chromium、Firefox 和 WebKit 以供 Playwright 使用。
抓取示例:从网站抓取引文
让我们深入了解一个简单的抓取示例,在这个示例中,我们将从 quotes.toscrape.com 中提取引文。该网站包含名言和作者,使其成为抓取练习的绝佳资源。
第 1 步:初始化 Playwright 并启动浏览器
首先,您需要初始化 Playwright 并启动一个浏览器(本例中为 Chromium)。以下是操作方法:
ruby
require 'playwright-ruby-client'
Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
browser = playwright.chromium.launch(headless: true) # 启动无头浏览器
page = browser.new_page
page.goto('http://quotes.toscrape.com/')
puts "Page title: #{page.title}" # 可选:打印页面标题以验证是否已正确加载
# 关闭浏览器
browser.close
end
在此代码片段中,Playwright 在无头 Chromium 浏览器中打开了 quotes.toscrape.com 页面。
第 2 步:抓取引文和作者
现在,我们要从页面中抓取引文及其作者。为此,我们需要检查页面结构并识别包含引文和作者的元素。
以下是提取引文及其相应作者的代码:
ruby
require 'playwright-ruby-client'
Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
browser = playwright.chromium.launch(headless: true)
page = browser.new_page
page.goto('http://quotes.toscrape.com/')
# 查找所有引文元素
quotes = page.query_selector_all('.quote')
quotes.each do |quote|
text = quote.query_selector('.text').text_content.strip
author = quote.query_selector('.author').text_content.strip
puts "Quote: #{text} - Author: #{author}"
end
browser.close
end
该脚本使用 Playwright 访问网站、提取引文文本和作者,然后将其打印到控制台。.quote 类针对每个引文块,我们使用 .text 和 .author 来提取相关信息。
第 3 步:处理分页
引文网站使用分页,因此您可能希望抓取所有页面,而不仅仅是第一页。以下是处理分页的方法:
ruby
require 'playwright-ruby-client'
Playwright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright|
browser = playwright.chromium.launch(headless: true)
page = browser.new_page
page.goto('http://quotes.toscrape.com/')
loop do
quotes = page.query_selector_all('.quote')
quotes.each do |quote|
text = quote.query_selector('.text').text_content.strip
author = quote.query_selector('.author').text_content.strip
puts "Quote: #{text} - Author: #{author}"
end
next_button = page.query_selector('li.next > a')
break unless next_button # 如果没有下一页,则退出循环
next_button.click
page.wait_for_load_state('load') # 等待下一页加载
end
browser.close
end
该代码通过单击“下一页”按钮循环遍历每个页面,直到没有更多页面。它继续从每个页面中提取引文和作者。
分步指南:使用 Playwright 和 CapSolver 在 Ruby 中解决 captcha
本指南说明如何使用 CapSolver 浏览器扩展在 Ruby 中使用 Playwright 解决 captcha/reCaptcha。CapSolver 提供了一种简单的方法来处理验证码,无需编写额外代码来直接解决它们。
第 1 步:安装 Playwright 和依赖项
首先,确保您已安装 Playwright:
bash
gem install playwright-ruby-client
第 2 步:下载并配置 CapSolver 扩展
-
下载 CapSolver 扩展:
- 从 CapSolver GitHub 发行页面 下载 CapSolver 扩展。
- 将扩展解压缩到项目根目录下的一个目录中,例如
./CapSolver.Browser.Extension。
-
配置扩展:
- 在 CapSolver 扩展目录中找到配置文件
./assets/config.json。 - 将
enabledForcaptcha选项设置为true,并将captchaMode调整为token以进行自动求解。
示例
config.json:json{ "enabledForcaptcha": true, "captchaMode": "token" // 其他设置保持不变 } - 在 CapSolver 扩展目录中找到配置文件
第 3 步:使用 CapSolver 扩展设置 Playwright
以下是将 CapSolver 扩展加载到 Playwright 浏览器中的方法:
-
要求 Playwright 并设置路径:
rubyrequire 'playwright-ruby-client' require 'fileutils' # 获取 CapSolver 扩展目录的路径 extension_path = File.join(Dir.pwd, 'CapSolver.Browser.Extension') -
使用 CapSolver 扩展启动浏览器:
使用 Playwright 启动加载了 CapSolver 扩展的 Chromium 浏览器。rubyPlaywright.create(playwright_cli_executable_path: '/path/to/cli') do |playwright| browser = playwright.chromium.launch_persistent_context('', { headless: false, # 运行带可见浏览器的调试 args: [ "--disable-extensions-except=#{extension_path}", "--load-extension=#{extension_path}" ] }) page = browser.new_page page.goto('https://quotes.toscrape.com/') # 替换为目标 URL # 定位 captcha 复选框或框架并与之交互 page.wait_for_selector('iframe', state: 'visible') # 调整选择器以定位 captcha iframe page.click('iframe') # 调整单击事件以适应您的 captcha 的交互 # 可以根据网站的要求添加其他步骤 browser.close end
附加代码
在 CapSolver 中领取顶尖验证码解决方案的奖励代码:scrape。兑换后,每次充值后您将获得额外的 5% 奖励,无限次。

结论
在 Ruby 中使用 Playwright 进行网页抓取提供了一种高效且强大的方法来从网站中提取数据。无论是简单的静态内容还是动态加载的页面,Playwright 都能轻松地处理。在本教程中,我们从网站中抓取了引文和作者,但 Playwright 可以做更多的事情,例如与表单交互、截取屏幕截图,甚至运行基于浏览器的测试。
如果您正在寻找一个用于在 Ruby 中进行网页抓取的强大工具,那么 Playwright 是一个绝佳的选择。它易于设置、速度快,并且足够灵活,可以处理各种抓取任务。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

Cloudflare 错误 1006、1007、1008 解决方法 | 如何修复
遇到 Cloudflare 错误 1006、1007 或 1008?学习解决这些访问被拒绝问题的实用方法,提升您的网络爬虫体验。

Lucas Mitchell
05-Dec-2025

如何使用 Scrapling 和 CapSolver 解决验证码
Scrapling + CapSolver 支持通过 ReCaptcha v2/v3 和 Cloudflare Turnstile 绕过进行自动化抓取。

Ethan Collins
05-Dec-2025

在 Selenium 中更改用户代理 | 步骤 & 最佳实践
在Selenium中更改用户代理是许多网络爬虫任务中的关键步骤。它有助于将自动化脚本伪装成普通浏览器...

Anh Tuan
05-Dec-2025

如何确定`action`是否需要使用CapSolver扩展程序来解决Cloudflare Turnstile
学习识别Cloudflare Turnstile的CAPTCHA操作以实现有效解决。按照我们的分步指南使用Capsolver的工具和技巧。

Nikolai Smirnov
05-Dec-2025

探索9Proxy的力量:全面评测
在本文中,我们将向您展示9proxy是什么以及其提供的服务。

Anh Tuan
04-Dec-2025

使用Selenium和Python进行网络爬虫 | 解决网络爬虫中的验证码
在本文中,您将掌握使用Selenium和Python进行网络爬虫,并学习如何解决过程中遇到的Captcha,以实现高效的数据提取。

Ethan Collins
04-Dec-2025

