Способ разобрать HTML-документ в Ruby? - PullRequest
27 голосов
/ 31 марта 2010

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

Ответы [ 4 ]

43 голосов
/ 31 марта 2010

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

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

9 голосов
/ 31 марта 2010

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

5 голосов
/ 06 августа 2015

Вы также можете попробовать Oga от Yorick Peterse.

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

2 голосов
/ 08 февраля 2017

Ruby Cheerio - анализатор HTML в стиле jQuery в ruby. Наиболее упрощенная версия Nokogiri для сканеров. Это рубиновая версия самого популярного пакета 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
...