はじめてのRuby!Nokogiriでスクレイピングの基礎を理解しよう!

RubyにはWebスクレイピングするために便利なライブラリ「Nokogiri」があります。

Rubyで開発を行う際に、

「スクレイピングのやり方がよくわからない」
「効率よくWebスクレイピングしたい」

のような問題に直面することがあります。

ここでは、スクレイピングするときに便利なNokogiriについて、

【基本】そもそもスクレイピングとは?
【基本】Nokogiriとは
【基本】Nokogiriの使い方
【実践】Nokogiriで各要素を取得する

などについてわかりやすく解説していきます。

Nokogiriはスクレイピングするときに非常に便利なライブラリですので、この機会に覚えておきましょう!

目次

そもそもスクレイピングとは?

スクレイピングとは主にWebサイトからHTMLのデータを取得して、必要な要素を抽出、加工するための技術を指します。

Webスクレイピングは多くの検索エンジンでも使用され、Web上のデータにインデックス付けするときなどに使用されます。

スクレイピングを使用することでHTMLのタグなどを簡単に取り出すことができるので、Webサービス開発の現場ではよく使用される技術の1つになります。

Nokogiriとは?

nokogiri
公式サイト:http://www.nokogiri.org/

NokogiriはRubyでWebスクレイピングするときにの定番ライブラリです。

Nokogiriを使用するためには、「open-url」「nokogiri」の2つのライブラリが必要になります。

open-urlは標準で使用できるライブラリですが、「nokogiri」は別途インストールする必要があります。

インストールは以下のコマンドで行います。

$ gem install nokogiri

インストールできたら、Nokogiriの使い方について見ていきましょう!

Nokogiriの使い方

HTMLの情報を全て取得したい場合は、NokogiriでHTMLの引数に取得したいURLを指定します。

サンプルプログラム:

require 'nokogiri'
require 'open-uri'

# 対象のURL
url = "https://www.sejuku.net/blog/"

# NokogiriでURLの情報を取得する
contents = Nokogiri::HTML(open(url),nil,"utf-8")

puts contents

実行結果:

<!DOCTYPE html>
<!—[if IE 8]><html class=“ie8”><![endif]—><!—[if IE 9]><html class=“ie9”><![endif]—><!—[if gt IE 8]><!—><html lang=“ja” itemscope itemtype=“http://schema.org/WebSite” prefix=“og: http://ogp.me/ns#”> <!—<![endif]—>
〜
/* <![CDATA[ */
var Gianism = {“admin”:””};
/

このように簡単にHTMLの情報を取得することができましたね!

Nokogiriで各要素を取得する

ここではNokogiri公式ページで紹介されているサンプルプログラムを参考に、cssやxpathのノードを取得する方法について紹介します。

サンプルプログラム:

require 'nokogiri'
require 'open-uri'

# 対象のURL
url = "https://www.sejuku.net/blog/"

# Nokogiriで切り分け
doc = Nokogiri::HTML(open(url))

puts "### CSSノードを検索する"
doc.css('h2').each do |link|
  puts link.content
end

puts "### xpathノードを検索する"
doc.xpath('//nav//ul//li/a', '//article//h2').each do |link|
  puts link.content
end

puts "### ミックスされたノードを検索する."
doc.search('nav ul.menu li a', '//article//h2').each do |link|
  puts link.content
end

実行結果:

### CSSノードを検索する
〜
LinuxでWindowsアプリ?Wine 3.0とWinMergeをインストールしてみた
【CSS】文字サイズを自由に変更! font-sizeの使い方
【C#入門】ListViewの使い方(項目の追加、ソートやスクロールの設定)

サンプルプログラムでは、Nokogiriで取得したHTML情報を元に、cssやxpathなどのノードを全て取得して出力しています。

各ノードごとに指定した「h2」タグの情報を全部取得することができました。

まとめ

ここでは、Nokogiriでスクレイピングする方法について、

  • そもそもスクレイピングとは?
  • Nokogiriとは
  • Nokogiriの使い方
  • Nokogiriで各要素を取得する

などについて解説しました。

Webサービスの開発を行う上で、スクレイピングは使用する機会が多いと言えますので、使い方についてはよく理解しておきましょう。

もし、Nokogiriの使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次