我正在寻找一种方法来在 rails 的外部 URL 中获得最大的图像。例如,将提供一个 URL。服务器端将扫描页面的 HTML,然后“抓取”它找到的最大图像,并下载它(或收集它的链接)。
有谁知道我可以用什么工具来做到这一点?
谢谢
我正在寻找一种方法来在 rails 的外部 URL 中获得最大的图像。例如,将提供一个 URL。服务器端将扫描页面的 HTML,然后“抓取”它找到的最大图像,并下载它(或收集它的链接)。
有谁知道我可以用什么工具来做到这一点?
谢谢
概括地说,有两种方法可以做到这一点,要么自己做,要么插入外部服务。
如果您想自己执行此操作,我建议您使用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 ” gem 看起来对此很有用。
另一种选择是使用外部服务来执行此操作。我建议检查embedly,其中有一个gem。如果您认为您将来可能计划需要这些链接中的任何其他信息,我认为这将是更好的选择,但请注意访问可以让您获得最大图像(预览)的服务版本实际需要支付月费。
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 请求并比较内容长度响应标头。