Hpricotで解析したページから最大の画像を取得しようとしていますが、うまくいきません。imgタグの幅と高さの属性にアクセスするにはどうすればよいですか?
3 に答える
5
画像の幅/高さの属性が各画像の HTML に存在する場合は可能です。
hp = Hpricot(page_html)
# get all image tags, sort them by height, then take largest
largest_image = hp.search("img").sort_by {|img| img["height"].to_i}[-1]
url = largest_image["src"]
Hpricot Challengeから派生。
于 2012-05-28T07:15:48.683 に答える
1
hemalが言ったように、唯一可能な方法は、画像サイズが画像タグの属性にリストされている場合です。しかし、それらがあれば、それらを読むのは簡単です。すべてのタグの属性は、関連するハッシュ キーを通じて利用できます。例えば:
doc = Hpricot("<img src='foo.jpg' width=200 height=200 /><img src='bar.jpg' width=100 height=100 />")
doc.search("//img").each do |image|
puts "#{image[:src]} => #{image[:width]}x#{image[:height]}"
end
これにより、次のようになります。
foo.jpg => 200x200
bar.jpg => 100x100
于 2010-11-18T23:56:18.577 に答える
1
マークアップに含まれていない限り、hpricot を介してファイルの詳細にアクセスすることはできません。
別の方法として、hpricot を使用してすべての src 属性を画像に返し、次にこれらの要求をループして、応答を画像として解析し、これらの実際の画像ファイルのプロパティにアクセスすることができます。
于 2010-08-11T13:47:23.157 に答える