{category}

Ruby - 人気のある外部ライブラリ

Nokogiri

ノコギリ(外部ライブラリとパッケージ管理

意味 HTMLやXMLの解析ツール


Nokogiriとは?

Nokogiriは、HTMLやXMLを解析するためのRubyライブラリです。ウェブスクレイピングやHTMLの操作に非常に便利で、多くの開発者に愛用されています。日本語で「鋸」を意味する名前が付けられています。

Nokogiriの具体的な使い方

HTMLの解析とデータ抽出

require 'nokogiri'

html = <<-HTML
<html>
  <body>
    <h1>ニュース一覧</h1>
    <ul class="news-list">
      <li>新商品が発売されました</li>
      <li>夏季休業のお知らせ</li>
      <li>新しい支店がオープンします</li>
    </ul>
  </body>
</html>
HTML

doc = Nokogiri::HTML(html)

news_items = doc.css('ul.news-list li').map(&:text)
puts "ニュース項目:"
news_items.each_with_index do |item, index|
  puts "#{index + 1}. #{item}"
end

👇出力結果

ニュース項目:
1. 新商品が発売されました
2. 夏季休業のお知らせ
3. 新しい支店がオープンします

この例では、HTMLの文字列を解析し、ニュース一覧から各ニュース項目を抽出しています。Nokogiriを使用してHTMLをパースし、CSSセレクタ(ul.news-list li)を使って必要な要素を選択し、そのテキスト内容を取得しています。

XMLの解析と操作

require 'nokogiri'

xml = <<-XML
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title>Ruby入門</title>
    <author>山田太郎</author>
    <price>2800</price>
  </book>
  <book>
    <title>Railsガイド</title>
    <author>鈴木花子</author>
    <price>3200</price>
  </book>
</bookstore>
XML

doc = Nokogiri::XML(xml)

# 本の情報を表示
doc.xpath('//book').each do |book|
  title = book.at_xpath('title').text
  author = book.at_xpath('author').text
  price = book.at_xpath('price').text
  puts "#{title} by #{author}, 価格: #{price}円"
end

# 新しい本を追加
new_book = Nokogiri::XML::Node.new('book', doc)
new_book.add_child("<title>Python基礎</title>")
new_book.add_child("<author>佐藤次郎</author>")
new_book.add_child("<price>2600</price>")
doc.at_xpath('//bookstore').add_child(new_book)

puts "\n新しい本を追加した後:"
puts doc.to_xml

👇出力結果

Ruby入門 by 山田太郎, 価格: 2800円
Railsガイド by 鈴木花子, 価格: 3200円

新しい本を追加した後:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title>Ruby入門</title>
    <author>山田太郎</author>
    <price>2800</price>
  </book>
  <book>
    <title>Railsガイド</title>
    <author>鈴木花子</author>
    <price>3200</price>
  </book>
<book>
<title>Python基礎</title>
<author>佐藤次郎</author>
<price>2600</price>
</book>
</bookstore>

この例では、XMLの解析と操作を行っています。まず、XMLから本の情報を抽出して表示し、次に新しい本の情報をXMLに追加しています。Nokogiriを使用してXMLをパースし、XPathを使って要素を選択・操作しています。

Nokogiriに関するよくある質問

Q. Nokogiriでウェブページを解析するには?
A. Nokogiriでウェブページを解析するには、まずrequire 'open-uri'を使ってウェブページを取得し、その内容をNokogiri::HTML(open(url))に渡します。その後、CSSセレクタやXPathを使って必要な情報を抽出できます。
Q. CSSセレクタとXPathの違いは?
A. CSSセレクタは主にウェブ開発者に馴染みがあり、簡潔に要素を選択できます。XPathはより強力で柔軟性が高く、複雑な条件での要素選択が可能です。Nokogiriは両方をサポートしており、at_css/css(CSSセレクタ用)とat_xpath/xpath(XPath用)メソッドを提供しています。
Q. Nokogiriで要素を追加/変更するには?
A. 要素の追加はnew_node = Nokogiri::XML::Node.new('tag_name', doc)でノードを作成し、existing_node.add_child(new_node)で追加します。変更は、node.content = 'new text'やnode['attribute'] = 'value'のように行います。最後にdoc.to_htmlでHTMLとして出力できます。

Nokogiriが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのNokogiriやrubygems.org、bundle、Sinatra、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

rubygems.org

Rubyの公式パッケージホスト

種類: ライブラリの選択と評価

bundle

依存関係を管理するツール

種類: RubyGems

Sinatra

軽量Webアプリケーションフレームワーク

種類: 人気のある外部ライブラリ

[]

Procオブジェクトを実行する別の方法

種類: Procオブジェクト

class CustomError < StandardError

独自の例外クラスを定義

種類: カスタム例外