Ruby/Rubyの基礎知識

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

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

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Capybaraで対話的にProject Eulerを遊ぶ

ログイン後、Project Eulerの問題一覧が表示されています。1ページ目に表示されている問題一覧の各行からProblemクラスのインスタンスを生成し、まだ解いてない問題をひとつ選択して詳細を開いてみましょう。 要素が単一の場合は`Capybara::Session#find`、複数存在する場合は`Capybara::Session#all`でCSSセレクタまたはXPathを利用して検索します。検索して帰る結果は`Capybara::Node::Element`クラスのインスタンスで、次のようなメソッドが利用可能です。 よく使うのは、要素のテキストを抽出する`Capybara::Node::Element#text`、リンク要素に対して実行する`click`や`select`などでしょうか。 さて、問題詳細ページは以下のような画面となっています。
p

問題文を出力してみましょう。

問題自体は横着してRubyのprimeライブラリを使い、さくっと解いてしまいます。

答えは6857であるとわかりました。これをフォームに入れて提出しましょう。キャプチャコードは先ほどのスクリーンショットを参考にします。

ok

正解です!

以上の例で、Capybara(capybara-webkit)を使えば普段ブラウザで行うような操作をRubyから実行できることがなんとなく伝わっていれば幸いです。途中スクリーンショットを取って確かめつつ進めていきましたが、パターンがわかってしまえばすべてコードで完結させることも可能です。

Capybaraで人生を豊かにする

以上でCapybaraの紹介は終わりです。最後に一点、ここで挙げた例以外にも普段使いのウェブサイトをCapybara化(?)するといろいろと捗る、ということをお伝えして終わりとします。

たとえば筆者は古い本を図書館で借りて読むのが好きなのですが、現在借りている本の情報を図書館ウェブサイトから引っ張ってきて、返却日が近付くとTwitter botに通知させています。また、このAllAbout連載自体も、管理画面へアクセスすることなくコマンドラインから更新できるようなスクリプトを書いておりたいへん便利です。

このように、(他人の再利用性は低いですが)自分の生活が豊かになる実用的なプログラムを書けるのがCapybaraの魅力だと思います。興味をもった方はぜひいろいろと試してみてください。

【編集部おすすめの購入サイト】
楽天市場で Ruby 関連の書籍を見るAmazon で Ruby 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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