Ответ 1
Теперь используйте Nokogiri.
Я искал библиотеки XML и HTML на rubyforge для простого способа вытащить данные из веб-страницы. Например, если я хочу проанализировать страницу пользователя в stackoverflow, как я могу получить данные в удобном для использования формате?
Скажите, что я хочу проанализировать мою собственную страницу пользователя для моего текущего рейтинга репутации и списка значков. Я попытался преобразовать источник, полученный с моей пользовательской страницы, в xml, но преобразование завершилось неудачно из-за отсутствия div. Я знаю, что могу выполнить сравнение строк и найти текст, который я ищу, но должен быть намного лучший способ сделать это.
Я хочу включить это в простой script, который выплескивает мои пользовательские данные в командной строке и, возможно, расширяет его в графическое приложение.
Теперь используйте Nokogiri.
К сожалению, stackoverflow претендует на XML, но на самом деле это не так. Hpricot, однако может проанализировать этот суп с тегами в дерево элементов для вас.
require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://stackoverflow.com/users/19990/armin-ronacher"))
reputation = (doc / "td.summaryinfo div.summarycount").text.gsub(/[^\d]+/, "").to_i
И так далее.
попробуйте hpricot, его хорошо... awesome
Я использовал его несколько раз для очистки экрана.
Мне всегда очень нравится то, что пишет Илья Григорик, и он написал хороший пост об использовании hpricot.
Я также прочитал это сообщение некоторое время назад, и похоже, что это было бы полезно для вас.
Не делал ни сам, ни YMMV, но они кажутся очень полезными.
Что-то, с чем я столкнулся, пытается сделать это раньше, так это то, что несколько веб-страниц представляют собой хорошо сформированные XML-документы. Hpricot может справиться с этим (я его не использовал), но когда я делал аналогичный проект в прошлом (используя Python и его библиотеку, встроенную в функции синтаксического анализа), это помогло иметь предварительный процессор для очистки HTML. Я использовал привязки python для HTML Tidy как это, и это сделало жизнь намного проще. Рубиновые привязки здесь, но я не пробовал их.
Удачи!
это старая тема, но здесь новая. Пример получения репутации:
#!/usr/bin/env ruby
require 'rubygems'
require 'hpricot'
require 'open-uri'
user = "619673/100kg"
html = "http://stackoverflow.com/users/%s?tab=reputation"
page = html % user
puts page
doc = Hpricot(open(page))
pars = Array.new
doc.search("div[@class='subheader user-full-tab-header']/h1/span[@class='count']").text.each do |p|
pars << p
end
puts "reputation " + pars[0]