Ruby で Playwright を使用して Web スクレイピングを行う方法

Nikolai Smirnov
Software Development Lead
08-Oct-2024
Webスクレイピングは、市場分析、学術研究、またはデータ主導のプロジェクトなど、ウェブサイトからデータを収集するための必須スキルとなっています。Playwrightは、複数の言語(Rubyを含む)をサポートし、ウェブサイトを効率的にスクレイピングするために使用できる優れたブラウザ自動化ツールです。このガイドでは、quotes.toscrape.comを例として、RubyでPlaywrightを設定してウェブサイトをスクレイピングする方法を説明します。
Playwrightとは?
Playwrightは、Seleniumに似ていますが、実行速度が速く、Chromium、Firefox、WebKitなど、すべての最新のブラウザをサポートする、Webテストのための最新の自動化フレームワークです。Playwrightは、ヘッドレスとヘッド付きのスクレイピング、ページナビゲーション、フォームとのやり取りなど、強力なブラウザ自動化ツールを提供します。
RubyでPlaywrightを使用する理由
Rubyは、シンプルさと開発者フレンドリーな構文で知られる人気のある言語です。RubyでPlaywrightを使用することで、最新のブラウザ自動化の力を活用しながら、Rubyのクリーンで読みやすいコード構造を維持できます。Playwrightは、速度、組み込みの待機条件、JavaScriptによって読み込まれた動的コンテンツを処理する機能により、Webスクレイピングに最適です。
RubyでPlaywrightを設定する
RubyでPlaywrightを使用してスクレイピングを開始するには、いくつかの設定が必要です。
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
これにより、Playwrightで使用するために、Chromium、Firefox、WebKitがダウンロードされます。
スクラピングの例:ウェブサイトから引用句をスクレイピングする
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}" # オプション:ページタイトルを出力して、正しく読み込まれていることを確認する
# ブラウザを閉じる
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 "引用句: #{text} - 著者: #{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 "引用句: #{text} - 著者: #{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を解決する
このガイドでは、RubyでPlaywrightを使ってCapSolverブラウザ拡張機能で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を設定する
PlaywrightブラウザにCapSolver拡張機能を読み込む方法を以下に示します。
-
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
reCaptchaを解決するための手順は、captchaと同じです。
ボーナスコード
CapSolverでトップキャプチャソリューションのボーナスコードを請求してください:scrape。これを引き換えると、チャージごとに5%のボーナスが追加で付与されます(無制限)。

まとめ
RubyでPlaywrightを使用すると、ウェブサイトからデータを抽出するための効率的で強力な方法が提供されます。単純な静的コンテンツでも、動的に読み込まれたページでも、Playwrightはどちらも簡単に処理します。このチュートリアルでは、ウェブサイトから引用句と著者をスクレイピングしましたが、Playwrightはフォームとのやり取り、スクリーンショットの取得、ブラウザベースのテストの実行など、さらに多くのことができます。
Rubyで堅牢なWebスクレイピングツールを探しているなら、Playwrightは優れた選択肢です。セットアップが簡単で、高速で、さまざまなスクレイピングタスクを処理できる柔軟性を備えています。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

Webスクレイピングに最適なユーザーエージェントと使用方法
ウェブスクレイピングにおける最良のユーザーエージェントガイドと、検知回避のための効果的な使用方法。ユーザーエージェントの重要性、種類、シームレスで検知されないウェブスクレイピングのための使用方法を解説します。

Sora Fujimoto
07-Mar-2025

Webスクレイピングと自動化のためのCloudflare JSチャレンジの解決方法
CloudflareのJavaScriptチャレンジを解決し、シームレスなウェブスクレイピングと自動化を実現する方法を学びましょう。ヘッドレスブラウザ、プロキシローテーション、そしてCapSolverの先進的なCAPTCHA解決機能の活用など、効果的な戦略を発見してください。

Sora Fujimoto
05-Mar-2025

Cloudflare TLSフィンガープリンティング:概要と解決策
CloudflareのTLSフィンガープリンティングによるセキュリティへの活用、ボットの検出とブロック方法、ならびにWebスクレイピングや自動ブラウジングタスクにおける解決策を学びましょう。

Sora Fujimoto
28-Feb-2025

なぜ私は何度もロボットでないことの確認を求められるのですか?
Googleがロボットではないことを確認するよう促す理由を学び、CapSolverのAPIを使用してCAPTCHAチャレンジを効率的に解決するなどのソリューションを探ります。

Sora Fujimoto
25-Feb-2025

Cloudflare保護ウェブサイトからのデータ抽出方法
このガイドでは、Cloudflareで保護されたウェブサイトからデータを抽出するための倫理的で効果的な手法を探ります。

Sora Fujimoto
20-Feb-2025

ウェブサイトはなぜ私をボットだと思うのか?そして解決策は?
ウェブサイトがあなたをボットとフラグ付けする理由と、検出を回避する方法を理解する。主なトリガーには、CAPTCHAチャレンジ、疑わしいIPアドレス、および異常なブラウザの動作が含まれます。

Sora Fujimoto
20-Feb-2025