2010-08-05 3 views

Répondre

1

À moins que ce soit dans le balisage, vous ne pourrez pas accéder aux détails du fichier via hpricot. Une alternative est d'utiliser hpricot pour vous renvoyer tous les attributs src aux images, puis de les parcourir en boucle, vous pouvez analyser la réponse sous forme d'image et accéder aux propriétés de ces fichiers image réels.

+0

oui ce serait le plus précis mais j'ai juste besoin de déterminer la plus grande image sur la page et si les attributs ne sont pas là alors je vais passer cette image. alors comment utiliser hpricot pour obtenir les attributs width/height? Merci! – thinkfuture

+0

est-il possible d'obtenir les attributs d'image en utilisant hpricot? – thinkfuture

1

Comme l'a dit hemal, la seule solution possible est que les tailles d'image soient listées dans les attributs de l'image. Mais s'ils le sont, c'est facile de les lire. Les attributs de tous les tags sont disponibles via leur clé de hachage pertinente. Par exemple:

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 

Cela devrait se traduire par:

foo.jpg => 200x200 
bar.jpg => 100x100 
4

Il est possible, à condition que les attributs de largeur d'image/hauteur sont présentes dans le code HTML pour chaque image.

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"] 

Dérivé de Hpricot Challenge.

Questions connexes