スライドショースライドショー

はじめての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の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説