2016-11-03 6 views
2

Я использую следующий фрагмент кода для очистки определенных изображений с веб-страницы. На этой странице есть несколько изображений с тегом изображения, и как этот код интерпретирует это? Я заметил, что он сохраняет только первое изображение с тегом изображения. Это правда в целом?Сохранение изображения с помощью Nokogiri

Правильно ли я рассуждаю, что этот код начинает считывать css сверху вниз, и как только он находит первое изображение с тегом изображения, оно сохраняет его и перестает смотреть дальше? Потому что мне нужно это сделать именно так.

PAGE = "http://example.com/page.html" 
require 'nokogiri' 
require 'open-uri' 
html = Nokogiri.HTML(open(PAGE)) 
src = html.at('.image')['src'] 
File.open("foo.png", "wb") do |f| 
    f.write(open(src).read) 
end 
+0

Это просто захватывает первый элемент '.image' и загружает атрибут' src'. Он не заботится обо всех изображениях. Если это так, вы должны использовать метод 'css' вместо' at'. Вероятно, вы хотите использовать '.css ('img')'. – tadman

+0

Вы хотите найти элементы с классом 'image' или все' img's? – nloveladyallen

ответ

0

Да,

  • html.at находит первый соответствующий элемент только
  • html.search найти все элементы, соответствующие

, что ответить на ваш вопрос?


На соответствующую записку,

  • html.at(".image") находит любой элемент с class="image" даже если это например <div> тег
  • html.at("img.image") находит первый <img> элемент с class="image"
  • html.at("img") находит первый <img> элемент

 Смежные вопросы

  • Нет связанных вопросов^_^