我可以在Rails中使用哪些工具/方法从外部URL获取信息?

时间:2012-08-17 22:20:05

标签: html ruby-on-rails ruby

我正在寻找一种方法来获得rails中外部URL中最大的Image。例如,将提供URL。服务器端将扫描页面的HTML,然后“抓取”它找到的最大图像,并下载(或收集其链接)。

有人知道我可以使用哪些工具来做这件事吗?

由于

2 个答案:

答案 0 :(得分:2)

从广义上讲,有两种方法可以做到这一点,无论是你自己还是插入外部服务。

如果您想自己这样做,我建议使用nokogiri gem,它允许您解析HTML页面并提取您想要的标签。例如,要从页面获取所有图像链接,您可以这样做:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('<INSERT URL HERE>'))

doc.css('img').each do |link|
  puts link.attr("src").value
end

要获得最大的图像,您必须实际确定它们的大小。 “fastimage”宝石似乎对它有用。

另一种选择是使用外部服务来执行此操作。我建议您查看embedly,其中有gem。如果您认为将来可能计划从这些链接中获取任何其他信息,我认为这将是更好的选择,但请注意访问服务版本,以获取最大的图像({{3你需要实际支付月费。

答案 1 :(得分:2)

Nokogiri很棒,但是对于这个任务,你真的想要机械化:

require 'mechanize'
agent = Mechanize.new
page = agent.get 'http://www.amazon.com/'

您需要先下载所有图像,然后才能确定最大的图像。

images = page.images.map{|image| agent.get image.url}
largest = images.max_by{|image| image.body.size}
largest.save

如果下载所有图片看起来太多,您可以考虑发出HEAD请求并比较内容长度响应标头。