我正在寻找一种方法来获得rails中外部URL中最大的Image。例如,将提供URL。服务器端将扫描页面的HTML,然后“抓取”它找到的最大图像,并下载(或收集其链接)。
有人知道我可以使用哪些工具来做这件事吗?
由于
答案 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请求并比较内容长度响应标头。