2010-08-05 42 views

回答

1

除非它在標記中,否則您將無法通過hpricot訪問文件詳細信息。

另一種方法是使用hpricot將所有src屬性返回給圖像,然後通過請求這些屬性進行循環,您可以將響應解析爲圖像並訪問這些實際圖像文件的屬性。

+0

是的,這將是最準確的,但我只需要確定頁面上最大的圖像,如果屬性不存在,那麼我只會跳過該圖像。那麼我將如何使用hpricot來獲取寬度/高度屬性?謝謝! – thinkfuture 2010-08-12 05:23:44

+0

有沒有什麼辦法可以使用hpricot獲取圖片屬性? – thinkfuture 2010-08-15 23:16:29

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 
4

這是可能的,所提供的圖像寬度/高度屬性存在於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