Способ анализа HTML-документа в Ruby?

как класс DOMDocument в PHP, есть ли какой-либо класс в RUBY (i.e core RUBY), чтобы проанализировать и получить значение элементов узла из HTML-документа.

4 ответов


нет встроенного парсера HTML (пока), но некоторые очень хорошие из них доступны, в частности nokogiri по.

Meta-answer: для общих потребностей, подобных этим, я бы рекомендовал проверить Ruby Toolbox сайт. Вы заметите, что Nokogiri является верхней рекомендацией для синтаксические анализаторы HTML


вы должны проверить hpricot. Это очень хорошо. Это не "основной" Рубин, но это часто используемый драгоценный камень.


вы также можете попробовать ОГА от Йорика Peterse.

это синтаксический анализатор XML/HTML, написанный на Ruby, который не требует системных библиотек, таких как libxml. Вы можете найти его здесь. https://github.com/YorickPeterse/oga


Ruby Cheerio-синтаксический анализатор HTML в стиле jQuery в ruby. Самая упрощенная версия Nokogiri для искателей. Это рубиновая версия самого популярного пакета NodeJS cheerio.

перейдите по ссылке для простого примера обходчик.

gem установить 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