web-dev-qa-db-ja.com

RubyでHTMLドキュメントを解析する方法?

pHPのDOMDocumentクラスのように、Ruby(つまりコアRuby)にクラスがあり、HTMLドキュメントからノード要素の値を解析して取得します。

28
Harish Kurup

(まだ)組み込みのHTMLパーサーはありませんが、特に Nokogiri のような非常に優れたパーサーがいくつかあります。

メタ答え:これらのような一般的なニーズについては、 Ruby Toolbox サイトをチェックすることをお勧めします。 HTMLパーサー の推奨はNokogiriであることがわかります

43

hpricot を確認してください。それは非常に良いです。 「コア」Rubyではありませんが、一般的に使用されているGemです。

9
Peter

Yorick PeterseのOgaを試すこともできます。

これは、Rubyで記述されたXML/HTMLパーサーであり、libxmlなどのシステムライブラリを必要としません。ここで見つけることができます。 https://github.com/YorickPeterse/oga

5
microspino

Ruby Cheerio-RubyのjQueryスタイルのHTMLパーサー。クローラー向けのNokogiriの最も簡略化されたバージョン。これはRuby最も人気のあるNodeJSパッケージのバージョンですcheerio)。

簡単なクローラーの例のリンクをたどってください。

gem install Ruby-cheerio

require 'Ruby-cheerio'

jQuery = RubyCheerio.new("<html><body><h1 class='one'>h1_1</h1><h1>h1_2</h1></body></html>")

jQuery.find('h1').each do |head_one|
    p head_one.text
end

# getting attribute values like jQuery.
p jQuery.find('h1.one')[0].prop('h1','class')

# function chaining similar to jQuery.
p jQuery.find('body').find('h1').first.text
2
dineshsprabu