Получение самого большого изображения со страницы через Hpricot - PullRequest
0 голосов
/ 05 августа 2010

Я пытаюсь получить самое большое изображение со страницы, которую я анализирую с Hpricot, и мне не везет.Как получить к нему доступ к атрибутам ширины и высоты тега img?

Ответы [ 3 ]

5 голосов
/ 28 мая 2012

Это возможно, если атрибуты ширины / высоты изображения присутствуют в 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 .

1 голос
/ 19 ноября 2010

Как сказал Хемаль, единственный возможный путь - это если размеры изображения указаны в атрибутах тега изображения. Но если они, их легко прочитать. Все атрибуты тегов доступны через их соответствующий хэш-ключ. Например:

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
1 голос
/ 11 августа 2010

Если он не находится в разметке, вы не сможете получить доступ к деталям файла через hpricot.

Альтернативой является использование hpricot для возврата всех атрибутов src к изображениям, а затем их повторение по запросу, вы можете проанализировать ответ как изображение и получить доступ к свойствам этих фактических файлов изображений.

...