我正在尝试从Hpricot解析的页面上获取最大的图像并且没有任何运气。如何使用它访问img标签的width和height属性?
答案 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"]
答案 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