RubyでのスクレイピングにはNokogiriを使おう!
  • facebookページ
  • twitterページ
  • 2021.04.01

    RubyでのスクレイピングにはNokogiriを使おう!

    RubyではWebサイト作成以外にも様々なシステム開発が可能ですが、Webスクレイピングに関しても簡単に実装することが可能です。

    本記事では、Rubyでのスクレイピングに利用可能なライブラリ「Nokogiri」について、インストール方法から簡単な使い方までご紹介していきます。

    Nokogiriについて


    Nokogiriは、Rubyでスクレイピング処理を実装したい際に利用される代表的なライブラリです。

    スクレイピングって何?

    スクレイピングは、WebサイトからHTMLデータを抽出する技術で、特定の要素や画像などを抽出・加工することが出来ます。

    具体的な利用用途としては、見出しだけを抽出して目次を作成したり、商品の価格や画像を抽出して一覧として加工するなど用途で利用されます。

    Nokogiriのインストール方法

    Nokogiriのインストールには、Rubyのパッケージ管理システムである「gem」のコマンドを利用して行います。

    権限周りのエラーが発生する場合「sudo」コマンドで実行してください。

    ポテパンダの一言メモ

    gemコマンドは、Rubyのパッケージ管理システムのため、Rubyがインストールされていることが前提条件です。

    インストールが完了していれば下記のコマンドでバージョン情報を確認出来ます。

    NokogiriでRubyのスクレイピングを試してみよう


    ではNokogiriを使っていくつか特定の要素を取得してみましょう。

    タイトルを取得

    タイトルタグは1つしか存在しないため下記のコードで取得出来ます。

    実行した結果が下記です。

    サンプル解説

    Nokogiriを利用したスクレイピングプログラムで必要なライブラリを読み込む必要があるため、下記の2つを定義します。

    「open-url」は、URLへアクセスするためのライブラリで、「nokogiri」は先程ダウンロードしたスクレイピング用のライブラリです。

    ポテパンダの一言メモ

    「open-url」は標準ライブラリなので、別途インストールする必要はありません。

    サンプルでは一旦URLから文字コードとreadメソッドでHTML Bodyの情報を取得し、変数「html」へ格納しています。

    次に「parse」メソッドにより読み込んだHTMLの内容を解析してオブジェクトに変換しています。

    最後に、生成されたオブジェクトから「title」タグを検索し、テキスト部分だけを取得した上でコンソール出力を実行しています。

    記事タイトルを取得

    続いて実際にも需要がありそうな、トップページに表示されている記事のタイトルを取得するサンプルコードを記述してみましょう。

    実行結果が下記です。

    サンプル解説

    基本的な処理内容はページのタイトルを取得した際と変わりません。

    今回は下記の部分で、pタグに設定された「topcontentsTitle」クラスの情報だけを取得し、記事タイトルを抽出しています。

    記事のURLを取得

    先程のサンプルでは記事タイトルを取得しましたが、記事のURLを取得するようなことも可能です。

    実行結果が下記です。

    サンプル解説

    今回のサンプルもHTMLを読み込んで解析を行うところまでは同じです。

    今回は「div」タグに設定された「topcontentsIn」クラスの情報を取得し、取得した情報の中から「a」タグの「href」属性に設定されたリンク先のURLのみを抽出しコンソールに出力しています。

    ポテパンダの一言メモ

    サンプルは記事執筆時点のものです。
    URLの構造やクラス名が変更になった場合など、スクレイピングのコードを更新する必要があります。

    さいごに: RubyでのスクレイピングならNokogiriを利用しよう


    本記事では、Rubyでスクレイピングを行う際に代表的なライブラリ「Nokogiri」の使い方についてご紹介してきました。

    今回のサンプルはあくまで簡易的なもので、対象ページのHTML構造を深く理解し、パターンを見つけることで様々なデータを取得することが可能となります。

    まずは基本となる使い方を把握した上で、ご自身でも様々なサイトからデータ取得にチャレンジしてみてください。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE