Как получить HTML-страницу со всеми ее объектами на Ruby - PullRequest
2 голосов
/ 16 июля 2009

Мне нужно получить HTML-страницу со всеми объектами на ней (таблицы стилей, JavaScript, изображения) и хранить данные в базе данных. Это можно реализовать простым извлечением файлов, перечисленных в атрибутах src, но, возможно, кто-то может предложить для этого какой-нибудь хелпер.

Кроме того, есть ли способ упаковать все эти файлы в один (например, веб-архив), которые могут быть открыты большинством браузеров?

Спасибо

Ответы [ 2 ]

4 голосов
/ 16 июля 2009

Вы можете использовать механизировать , чтобы сделать эту работу:

require "rubygems"
require "mechanize"

url = "http://stackoverflow.com/"
agent = WWW::Mechanize.new
page = agent.get(url)


page.search('img[@src]').each do |image|
  src = image["src"]
  image_file = agent.get(src) if src
  # Store image_file data it in database ...  
end

page.search('link[rel="stylesheet"]').each do |css|
  src = css["src"]
  css_file = agent.get(src) if src
  # Store css_file data it in database ...  
end

page.search('script[type="text/javascript"]').each do |script|
  src = script["src"]
  script_file = agent.get(src) if src
  # Store script_file data it in database ...    
end

Вам по-прежнему приходится обрабатывать исключения и исправлять ресурсы с помощью относительных атрибутов src. Но это должно сделать работу. Однако это решение не будет извлекать изображения, на которые есть ссылки в таблицах стилей.

0 голосов
/ 16 июля 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...