【Ruby入門】nokogiriでスクレイピング
  • facebookページ
  • twitterページ
  • 2018.01.16

    【Ruby入門】nokogiriでスクレイピング

    本記事では、スクレイピングを解説します。

    スクレイピングとは、単純に「Webページからデータを抽出すること」と理解すれば十分です。

    HTMLは、要はタグで記述されたデータのかたまりです。

    であれば、タグを手がかりにそこに書かれているデータを抽出できそうですね。

    スクレイピングをもう少し詳しく

    スクレイピングの定義を、Wikipediaに求めてみましょう。

    ウェブスクレイピング(英: Web Scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。

    要するに、ウェブサイトから欲しい情報を取り出す技術のようですね。

    本記事ではスクレイピングのツールとしてnokogiriというgemを使います。

    nokogiriのセットアップ

    nokogiriはgemとして提供されているので、とても簡単にセットアップできます。

    このページのInstallationを見ると、以下でインストールできるようです。

    このようなメッセージが返って来ればOKです。

    とりあえずnokogiri

    こちらのGitHub上のサイトでサンプルを見てみましょう。

    冒頭部分のみです。

    何だかよくわかりませんが、どうもdocというオブジェクトに何か入れているようです。

    中身を見るために、とりあえずdocをputsしてみましょう。

    [実行結果]

    よく見るとページのソースっぽいですね。

    サンプルにあるURLに直接アクセスして確認してみると、どうもページのソースそのまま取れたようです。

    それらを使って、ページの内容を取れないでしょうか?

    ではもう少しサンプルを使ってやってみましょう。

    [実行結果]

    うーん、何だか分かりませんね。

    でも、ちょっと待ってください。

    ページを見てみましょう。

    navバーのあたりが取れているようです。

    結果から見ると「doc.css(‘nav ul.menu li a’, ‘article h2’).each do |link|」の行は取得したい対象を書きます。

    では、以下のように差し替えるとどうなるでしょうか?

    [実行結果]

    ページ中にあるaタグの中身が全て取れました!

    お目当のデータを抜き取る

    要素を指定してデータを取れるということが分かったので、もう少し込み入ったことをしましょう。

    Wikipediaの内閣総理大臣のページを見てみましょう。

    ここから総理大臣の一覧を一気にぬきとります。

    ページのHTMLソースにて、伊藤博文のあたりを確認してください。

    tdタグの中のaタグ、ということが分かったので、以下のようにしてみましょう。

    [実行結果]

    出ました!!

    こうやって歴代の総理大臣を取り出すことができました。

    「doc.css(‘table tr td a’)」は、取得したいタグを指定しています。tableタグのtrのtdのaタグを取れ、という指定になります。

    よって、他のaタグの内容も取れてしまいましたが、歴代の総理大臣を取得することができました。

    まとめ

    スクレイピング、本当に便利ですよね。

    自分の好みのサイトを使って、ぜひいろいろ試してみてくださいね!


    他のRuby入門記事はこちら

    【Ruby入門】Rubyとは何か?学習方法や将来性まで考えました!

    【Ruby入門】Ruby on Railsをやってみよう!

    【Ruby入門】環境構築(Mac/Win)

    【Ruby入門】nokogiriでスクレイピング

    【Ruby入門】データベース

    【Ruby入門】gemとライブラリ

    【Ruby入門】エラーと例外処理

    【Ruby入門】モジュール(module)とMix-in

    【Ruby入門】Procクラスとラムダ(lambda)

    【Ruby入門】ブロック

    【Ruby入門】メソッド

    【Ruby入門】クラスをコーディング(2) オブジェクト指向

    【Ruby入門】クラスをコーディング(1) classを作る

    【Ruby入門】クラスの継承、オーバーライド

    【Ruby入門】クラスとオブジェクト

    【Ruby入門】ディレクトリ(フォルダ)の作成、削除

    【Ruby入門】ファイルの移動、コピー、削除

    【Ruby入門】入力と出力

    【Ruby入門】Rubyの正規表現

    【Ruby入門】正規表現で置換する

    【Ruby入門】正規表現とは何か?

    【Ruby入門】文字列の結合などの操作

    【Ruby入門】CSVの基本と操作

    【Ruby入門】JSONの基本と操作

    【Ruby入門】乱数(Random)などの数値計算用クラスや端数処理

    【Ruby入門】日付の基本と操作(Time, Date)

    【Ruby入門】数値の数え上げ「upto」と四捨五入

    【Ruby入門】文字列の標準ライブラリnkfとヒアドキュメント

    【Ruby入門】数値の基本とメソッド (timesメソッド他)

    【Ruby入門】ハッシュ(hash)をeachで取り出す!その他ハッシュの応用に

    【Ruby入門】ハッシュ(hash)とシンボルの基本

    【Ruby入門】文字列の基本と表示メソッド

    【Ruby入門】Rubyの繰り返しを極める!様々な繰り返しのバリエーション

    【Ruby入門】最初はこれだけ!まずは手を動かしたい人のRuby入門

    【Ruby入門】ifとelseについて

    【Ruby入門】配列と操作(基本編)

    【Ruby入門】eachメソッドの使い方と応用例


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

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

    関連ワード

    pickup









    ABOUT US

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

    READ MORE