Pregunta

Necesito obtener una página HTML con todos los objetos (Styles Hets, JavaScripts, Images) y almacenar datos en la base de datos. Es posible implementar esto mediante la obtención de archivos simples enumerados en los atributos SRC, pero tal vez alguien pueda sugerir cualquier gema auxiliar para esto.

Además, ¿hay forma de empaquetar todos estos archivos a uno (como Web Archieve), que la mayoría de los navegadores pueden abrir?

Gracias

¿Fue útil?

Solución

Podrías usar mecanizar Para hacer este trabajo:

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

Todavía tiene que manejar excepciones y arreglar recursos con atributos SRC relativos. Pero esto debería hacer el trabajo. Sin embargo, esta solución no obtendrá imágenes a las que se hace referencia en las hojas de estilo.

Otros consejos

Verificar Mecanizar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top