如何获取与Ruby的所有对象的HTML页面

我需要与在数据库中的关于它的所有对象(样式,Javascript角,图像)和存储数据取HTML页面。 它可以通过在SRC属性中列出简单的抓取文件来实现这一点,但也许有人可以提出任何辅助宝石这一点。

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

谢谢

--------------解决方案-------------

你可以用机械化来做好这项工作:

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属性的资源。 但是,这应该做的工作。 该解决方案,但我们不取那些在样式表中引用的图像。

退房机械化

分类:红宝石 时间:2012-01-01 人气:0
本文关键词: 红宝石,取
分享到:

相关文章

  • 请问红宝石取妄想出来的编程? 2014-02-11

    我一直在想我的转变从Java到Ruby和令我最重要的是Ruby的明朗的东西(我知道这个词的洞察力是一个质的抽象的,我猜的人谁骑在同一条船上会理解). 有时候,我觉得我差不多写伪代码. 是否红宝石采取偏执了编程,使之成为激情,而不是一份工作? --------------解决方案------------- 它更多的是你写的东西比你在写什么决定你如何充满激情的感觉对你的工作. 我个人喜欢写C#. Ruby是不错的,但它不是东西,让我去"哦,一切我到目前为止,完成吸走了!" 接近自然语言的语

  • Python的VS Groovy的VS红宝石? (基于在问题列出的标准) 2014-03-24

    考虑到其中的Python,Groovy的或Ruby下面列出的标准,你会不会用? 标准(重要性了10年,10是最重要的) API /库的丰富性提供(如数学,绘图,网络)(9) 能力的桌面嵌入(Java / C ++)应用程序(8) 易于部署的(8) 有能力的DLL接口/共享库(7) 能力产生的GUI(7) 社区/用户支持(6) 便携性(6) 数据库操作(3) 语言/语义(2) --------------解决方案------------- 我认为这将是很难得到一个客观的比较. 我个人比较喜欢的Py

  • 如何让文件在使用目录红宝石数 2015-02-12

    使用Ruby如何获得给定目录中的文件数量,文件的数量应包括递归目录计数. 例如:文件夹1(2个文件)----->文件夹2(4个文件)和文件夹2里面的folder1. 对于上述情况总数应为6个文件. 有没有在其中红宝石取我这个数的函数. --------------解决方案------------- 最快的方法应该是(不包括数目录): Dir.glob(File.join(your_directory_as_variable_or_string, '**', '*')).select { |fil

  • 为什么不“案例”与“时> 2”的工作? 2013-12-19

    这是为什么不工作? case ARGV.length when 0 abort "Error 1" when > 2 abort "Error 2" end --------------解决方案------------- 一个if语句可能会是你的代码更恰当的,因为你没有一个明确的范围/值,而只是一个大于: if ARGV.length == 0 abort "Error 1" elsif ARGV.length > 2 abort &

  • 通过红宝石用于从Twitter数据的连续取在轨道上的应用程序,后台进程 2012-01-25

    我的应用程序需要从Twitter数据的连续抓取. 我利用Twitter宝石来访问Twitter的API. 已经使用#鲁弗斯,调度每隔半小时后打Twitter的API,但它不工作,因为一段时间它是由Twitter的API增加限制阻止. --------------解决方案------------- 我已经回答了类似的问题在这里后台任务 基本上,如果你想在Twitter的API获取定期的东西,你可以用cron作业,但如果你想这样做实时的,可以考虑使用一个后台作业. 例 while true if t

  • 轨道/红宝石 - 实时屏幕抓取? 2013-04-04

    它是如何possiable创建实时屏幕抓取? 喜欢这个网站:www.bog.nu 下面是关于英文网站的一些信息:http://casperfabricius.com/site/2010/11/11/launch-bog-nu/ 我知道机械化. 但是,我不看它应该抽筋EventMachine的工作. --------------解决方案------------- 我不知道问题是什么 - they'll抓取他们要刮,解析HTML,并获得他们所需要的信息的网站. 我不知道他们是如何打破了应用程序的责任

  • 红宝石:我要如何转换整数的字符串(ARGV)表示,取值范围为整数数组 2012-11-17

    在Ruby中,我怎么可以代表无论是整数或范围,并分析它们转换为整数,其中包括每一个整数,在每个范围内的每个元素的数组标记的数组? 例如:给定输入[ "5", "7-10", "24", "29-31"] 我想产生输出[ 5, 7, 8, 9, 10, 24, 29, 30, 31 ] 谢谢. --------------解决方案------------- [ "5", "7-10", &

  • 红宝石风格:应该初始化取数据或只是原始数据作为参数的文件 2012-12-19

    我很好奇,如果任何人有什么是对象从在Ruby中的文件装载数据的最佳方式洞察力. 有没有约定? 有两种方法我能想到的实现这一点的: 有初始化方法接受一个路径或文件和初始化方法中分析数据,设置对象变量为好. 有主"亚军"的代码打开该文件,并解析它,然后传递正确的参数构造函数. 我也知道,我可以支持通过选项哈希或*指定参数和查看其大小两种方法,但我没有任何需要同时实现. --------------解决方案------------- 我会用第二个选项结合提供作为参数传递到主代码路径信息. 这

  • 红宝石:数组中取的第N个元素,如果它存在(在1行代码)? 2013-07-01

    我解析HTML. 例如: country_code = data.match(/Country Abbrev. : ([AZ]{2})/)[1] 这似乎是让我期待的价值的最短途径. 但是,如果该数据未找到(无),我请求对不存在数组的第二个元素? 我要怎么办:如果返回的对象不是至少有两个元素的数组,COUNTRY_CODE应该是零,否则,COUNTRY_CODE =数组[1]. 什么是解决这个问题的最好方法是什么? 也许那里是Ruby的一种更好的方式来处理这种类型的正则表达式查找,当你需要一个值?

  • 红宝石机械化屏幕抓取帮助 2013-09-03

    我试图在凑一个表中的行与日期. 欲刮除只有第三行具有今天的日期. 这是我的机械化代码. 我想选择排柱有女巫之日起今天和它和它的列: agent.page.search("// TD")的地图(:文本)..MAP(:条) Output: "11-02-2011", "1", "1", "1", "1", "0", "0,00 DKK", "

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.440 (s). 10 q(s)