Механизация очень хороша для подобных вещей.
http://mechanize.rubyforge.org/mechanize/
В частности, эта страница поможет:
http://mechanize.rubyforge.org/mechanize/GUIDE_rdoc.html
Под крышками Mechanize использует Nokogiri для разбора документа.Вот простая версия, использующая Open-URI и Nokogiri для чтения страницы, извлечения всех ссылок и написания HTML.
Добавлен пример:
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML(open('http://some.web.site'))
Доступ к ссылкам прост.При этом используются средства доступа CSS:
hrefs = (doc/'a[href]').map{ |a| a['href'] }
При этом XPath делает то же самое:
hrefs = (doc/'//a[@href]').map{ |a| a['href'] }
Сохранять содержимое легко.Создайте файл и попросите Нокогири выложить его в виде HTML:
File.new('some_web_site.html', 'w') { |fo| fo.puts doc.to_html }