我试图从我用 Hpricot 解析的页面中获取最大的图像,但没有任何运气。如何使用它访问 img 标签的宽度和高度属性?
问问题
983 次
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 回答