Ruby/Rubyの基礎知識

RubyによるWebスクレイピング(1): NokogiriでHTMLをパースする(2ページ目)

Rubyを使ってWeb上の情報を取得して取り扱う方法を紹介します。第一回ではNokogiriというRuby製ライブラリでHTMLをパースするところまでを紹介します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

HTMLパーサー「Nokogiri」

RubyのHTMLパーサーとしては"Nokogiri"というライブラリがよく使われています。

インストールは gem install nokogiri などとしてください。まずURLをopenしてNokogiriドキュメントを生成してみます。

文字列として読み込んだHTMLをパースしてNokogiri::HTML::Documentオブジェクトを作成しています。

Nokogiri::HTML::Documentが継承しているNokogiri::XML::Nodeは要素検索のためのメソッドを持っています。たとえばNokogiri::XML::Node#atはセレクタでヒットした最初の要素(Element)を返すメソッドです。

また、Nokogiri::XML::Node#cssNokogiri::XML::Node#xpathはヒットした要素すべてをNokogiri::XML::NodeSetにまとめて返します。例としてAllAboutトップページのメイン記事リストから、記事タイトルとリンク先URLをまとめて抜き出して出力してみます。

top2

Nokogiri::XML::NodeSetをeachで回した個々のNokogiri::XML::Element(li)に対してtextメソッドで表示テキストを、atで1階層降りた先のattrでhref属性値を取得しています。

次回

今回の記事で、WebのHTMLを取得・パースする方法を紹介しました。単純なHTMLだけならNokogiriで大抵のことは出来るのですが、フォームに値を入れて送信したり(ログイン操作含む)JavaScriptを実行したりと高度なことをやるには向いていません。

そこで、次回の記事ではRubyプログラムでブラウザを制御し、実際にユーザが操作しているのと同じ条件でWebからデータを抽出する方法を紹介します。

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

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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