Railsの外部URLで最大の画像を取得する方法を探しています。たとえば、URLが提供されます。サーバー側はページのHTMLをスキャンし、見つかった最大の画像を「取得」してダウンロードします(またはリンクを収集します)。
誰かが私がこれを行うために使用できるツールを知っていますか?
ありがとう
Railsの外部URLで最大の画像を取得する方法を探しています。たとえば、URLが提供されます。サーバー側はページのHTMLをスキャンし、見つかった最大の画像を「取得」してダウンロードします(またはリンクを収集します)。
誰かが私がこれを行うために使用できるツールを知っていますか?
ありがとう
大まかに言えば、これを行うには、自分で行う方法と、外部サービスに接続する方法の2つがあります。
これを自分で行いたい場合は、HTMLページを解析して必要なタグを引き出すことができるnokogirigemを使用することをお勧めします。たとえば、ページからすべての画像リンクを取得するには、次のようにします。
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」の宝石は、そのために役立つように見えます。
もう1つのオプションは、これを行うために外部サービスを使用することです。宝石がある埋め込みをチェックすることをお勧めします。将来、これらのリンクから他の情報が必要になる可能性があると思われる場合は、これがより良いルートになると思いますが、最大の画像(プレビュー)を取得するバージョンのサービスにアクセスすることに注意してください実際に月額料金を支払う必要があります。
のこぎりは素晴らしいですが、このタスクのためにあなたは本当に機械化したいです:
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リクエストを作成し、コンテンツの長さの応答ヘッダーを比較することを検討できます。