Ruby/Rubyの基礎知識

RubyによるWebスクレイピング(2): Capybaraで対話的ブラウジング

Capybaraを利用してウェブを操作・情報を取得する方法を紹介します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

はじめに

前回の記事では、WebのHTMLを取得し、Nokogiriを使ってパースする方法を紹介しました。

今回の記事では、Capybara を利用してウェブを操作・情報を取得する方法を紹介します。

Capybaraとは

jnicklas/capybara - GitHub

Capybaraはウェブアプリケーションのテストを行うためによく使われるライブラリです。しかしテストのみに留まらず、ドライバ(後述)を切り替えることによって実際のブラウザに近い動きをするためWebのスクレイピングに利用できます。

とりわけ、Nokogiri単体ではやや手に余る、ログインを必要とするWebスクレイピングやJavaScriptの実行を含んだ動作を簡潔な文法で扱えることが特徴です。Capybaraは以下のような可読性の高いDSL(domain-specific language)を提供します。

"login-form"というidを持つdivの中にある"email", "password"という名のフィールドにそれぞれ"with"で与えた文字列を埋め、「ログイン」と書かれたボタンをクリックする... という、見た目通りの動作をするコードです。

そして、Capybaraは内部的に「ドライバ」を切り替えることで様々なブラウザの動作をエミュレートし、上記のCapybara DSLはすべての対応ドライバで動きます。RackTestSelenium 2.0Poltergeistなど様々なドライバがありますが、今回はJavaScriptも実行可能なヘッドレスブラウザ(レンダリング結果を画面に表示する機能を取り除いたブラウザ)であるcapybara-webkitを利用します。

capybara-webkitのインストール

thoughtbot/capybara-webkit - GitHub

Webkit は、Safariを始めとするいくつかのブラウザで利用されているオープンソースのHTMLレンダリングエンジンのひとつです (ソースコード)。

そしてCapybaraからこのWebkitを利用するためのドライバがcapybara-webkitです。

capybara-webkitはQtに依存しているため、Wikiの該当項目を参考にあらかじめQtをインストールしておく必要があります。Macの場合はdmgをダウンロードするか、homebrewで入ります。

準備が整ったら、bundlerを利用してcapybara-webkitのgemをインストールします。

bundle installを実行したあとGemfile.lockを見ると、Capybaraは前回取り扱ったNokogiriに依存することがわかります。

次のページでは、capybara-webkitを使ってウェブサイトにログインする方法、情報を抜き出す方法を紹介します。

  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます