Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

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

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

Nokogiriについて


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

スクレイピングって何?

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

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

Nokogiriのインストール方法

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

gem install nokogiri

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

sudo gem install nokogiri
ポテパンダの一言メモ

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

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

nokogiri -v

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


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

タイトルを取得

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

require 'open-uri'
require 'nokogiri'

url = "https://style.potepan.com/"

charset = nil
html = open(url) do |f|
  charset = f.charset
  f.read
end

page = Nokogiri::HTML.parse(html, nil, charset)

p page.search("title").text

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

"働くエンジニアマガジン「ポテパンスタイル」"

サンプル解説

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

require 'open-uri'
require 'nokogiri'

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

ポテパンダの一言メモ

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

html = open(url) do |f|
  charset = f.charset
  f.read
end

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

page = Nokogiri::HTML.parse(html, nil, charset)

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

p page.search("title").text

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

記事タイトルを取得

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

require 'open-uri'
require 'nokogiri'

url = "https://style.potepan.com/"

charset = nil
html = open(url) do |f|
  charset = f.charset
  f.read
end

page = Nokogiri::HTML.parse(html, nil, charset)

page.xpath('//p[@class="topcontentsTitle"]').each do |content|
  p content.text
end

実行結果が下記です。

"未経験からプログラマーを目指すために知っておくべき知識とは"
"ブリッジSEとは一体どんな仕事なのか?求められるスキルやなり方を徹底解説!"
"マークアップエンジニアとは?仕事内容や求められるスキルを徹底解説!"
"ITストラテジスト試験とは|資格をとったらどんな仕事ができるの?"
"気になるセキュリティエンジニアの仕事内容と年収とは?"
"Java求人を探している方へ!最適な求人案件を見つけるための基礎知識"
"サーバーエンジニアって?将来性とキャリアパスを徹底解説"
"知っておきたい!ゲームプログラマーの将来性と年収相場とは"
....

サンプル解説

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

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

page.xpath('//p[@class="topcontentsTitle"]').each do |content|
  p content.text
end

記事のURLを取得

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

require 'open-uri'
require 'nokogiri'

url = "https://style.potepan.com/"

charset = nil
html = open(url) do |f|
  charset = f.charset
  f.read
end

page = Nokogiri::HTML.parse(html, nil, charset)

page.xpath('//div[@class="topcontentsIn"]').each do |content|
  p content.css('a').attribute('href').value
end

実行結果が下記です。

"https://style.potepan.com/articles/9074.html"
"https://style.potepan.com/articles/13124.html"
"https://style.potepan.com/articles/9849.html"
"https://style.potepan.com/articles/9591.html"
"https://style.potepan.com/articles/9639.html"
"https://style.potepan.com/articles/10251.html"
"https://style.potepan.com/articles/9478.html"
"https://style.potepan.com/articles/9510.html"
...

サンプル解説

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

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

ポテパンダの一言メモ

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

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


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

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

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

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。