代码之家  ›  专栏  ›  技术社区  ›  taro

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

  •  2
  • taro  · 技术社区  · 15 年前

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

    此外,是否有方法将所有这些文件打包为一个文件(如Web Archieve), 大多数浏览器都可以打开哪个?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  4
  •   Michel de Graaf    15 年前

    你可以使用 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属性修复资源。但这应该能完成任务。但是,此解决方案不会获取样式表中引用的图像。

        2
  •  0
  •   Aaron Hinni    15 年前