通过Hpricot从页面获取最大图像

时间:2010-08-05 17:22:28

标签: tags hpricot

我正在尝试从Hpricot解析的页面上获取最大的图像并且没有任何运气。如何使用它访问img标签的width和height属性?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

除非它在标记中,否则您将无法通过hpricot访问文件详细信息。

另一种方法是使用hpricot将所有src属性返回给图像,然后循环请求这些属性,您可以将响应解析为图像并访问这些实际图像文件的属性。

答案 2 :(得分: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