如何在Ruby上获取包含所有对象的HTML页面

时间:2009-07-16 10:06:07

标签: ruby fetch

我需要获取包含所有对象的HTML页面(样式表,javascripts,图像) 并将数据存储在数据库中。 可以通过简单获取src属性中列出的文件来实现这一点, 但也许有人可以为此建议任何助手宝石。

此外,有没有办法将所有这些文件打包成一个(如web archieve), 大多数浏览器都可以打开它?

由于

2 个答案:

答案 0 :(得分:4)

您可以使用mechanize来完成这项工作:

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属性修复资源。但这应该做的工作。但是,此解决方案不会获取样式表中引用的图像。

答案 1 :(得分:0)

查看Mechanize