0

我试图从我用 Hpricot 解析的页面中获取最大的图像,但没有任何运气。如何使用它访问 img 标签的宽度和高度属性?

4

3 回答 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 挑战

于 2012-05-28T07:15:48.683 回答
1

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

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

于 2010-08-11T13:47:23.157 回答
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 回答