【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タグの内容も取れてしまいましたが、歴代の総理大臣を取得することができました。

    まとめ

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

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



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE