CAPSOLVER
ブログ
Ruby で Playwright を使って Web スクレイピングする方法

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

Logo of CapSolver

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 Copy
ruby -v

Rubyがインストールされていない場合は、rbenvを介して、またはRubyの公式サイトから直接インストールできます。

2. Playwright Gemをインストールする

次に、playwright-ruby-client Gemをインストールする必要があります。このGemは、Ruby用のPlaywrightのバインディングを提供し、プログラムでブラウザとやり取りできるようにします。

次のコマンドを実行して、Gemをインストールします。

bash Copy
gem install playwright-ruby-client

3. ブラウザをインストールする

Gemをインストールしたら、Playwrightでサポートされているブラウザをインストールする必要があります。次のコマンドを実行します。

bash Copy
playwright install

これにより、Playwrightで使用するために、Chromium、Firefox、WebKitがダウンロードされます。

スクラピングの例:ウェブサイトから引用句をスクレイピングする

quotes.toscrape.comから引用句を抽出する、簡単なスクレイピングの例を見てみましょう。このウェブサイトには、著者の名前と一緒に有名な引用句が掲載されており、スクレイピングの練習に最適なリソースです。

ステップ1:Playwrightを初期化してブラウザを起動する

最初に、Playwrightを初期化し、ブラウザ(この場合はChromium)を起動する必要があります。方法は次のとおりです。

ruby Copy
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 Copy
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 Copy
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 Copy
gem install playwright-ruby-client

ステップ2:CapSolver拡張機能をダウンロードして構成する

  1. CapSolver拡張機能をダウンロードする:

    • CapSolver GitHubリリースページからCapSolver拡張機能をダウンロードします。
    • プロジェクトのルートにあるディレクトリ(./CapSolver.Browser.Extensionなど)に拡張機能を解凍します。
  2. 拡張機能を構成する:

    • CapSolver拡張機能ディレクトリ内の構成ファイル./assets/config.jsonを見つけます。
    • オプションenabledForcaptchatrueに設定し、自動解決のためにcaptchaModetokenに調整します。

    config.jsonの例:

    json Copy
    {
      "enabledForcaptcha": true,
      "captchaMode": "token"
      // 他の設定はそのまま
    }

ステップ3:CapSolver拡張機能を使用してPlaywrightを設定する

PlaywrightブラウザにCapSolver拡張機能を読み込む方法を以下に示します。

  1. Playwrightを必要とし、パスを設定する:

    ruby Copy
    require 'playwright-ruby-client'
    require 'fileutils'
    
    # CapSolver拡張機能ディレクトリのパスを取得する
    extension_path = File.join(Dir.pwd, 'CapSolver.Browser.Extension')
  2. CapSolver拡張機能をロードしてブラウザを起動する:
    Playwrightを使用して、CapSolver拡張機能をロードしたChromiumブラウザを起動します。

    ruby Copy
    Playwright.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スクレイピングに最適なユーザーエージェントと使用方法
Webスクレイピングに最適なユーザーエージェントと使用方法

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

Logo of CapSolver

Sora Fujimoto

07-Mar-2025

Webスクレイピングと自動化のためのCloudflare JSチャレンジの解決方法
Webスクレイピングと自動化のためのCloudflare JSチャレンジの解決方法

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

Cloudflare
Logo of CapSolver

Sora Fujimoto

05-Mar-2025

Cloudflare TLSフィンガープリンティング:その仕組みと解決策
Cloudflare TLSフィンガープリンティング:概要と解決策

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

Cloudflare
Logo of CapSolver

Sora Fujimoto

28-Feb-2025

なぜ私は何度もロボットでないことを確認するよう求められるのですか?
なぜ私は何度もロボットでないことの確認を求められるのですか?

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

Logo of CapSolver

Sora Fujimoto

25-Feb-2025

Cloudflareで保護されたウェブサイトからデータを取得する方法
Cloudflare保護ウェブサイトからのデータ抽出方法

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

Cloudflare
Logo of CapSolver

Sora Fujimoto

20-Feb-2025

ウェブサイトはなぜ私をボットだと考えるのか?そして、その解決策は?
ウェブサイトはなぜ私をボットだと思うのか?そして解決策は?

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

Logo of CapSolver

Sora Fujimoto

20-Feb-2025