Вот минимальный код, который я придумал для проверки вашего утверждения:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<div class="12345">
<div>
<img class="67890" src="https://foo.bar">
</div>
</div>
EOT
doc.search('//div[@class=12345]').map(&:to_html)
# => ["<div class=\"12345\">\n" +
# " <div>\n" +
# " <img class=\"67890\" src=\"https://foo.bar\">\n" +
# " </div>\n" +
# "</div>"]
# "</div>"]
Похоже, тег img
есть.
Вы используете Nokogiri::XML
разобрать. Нет, потому что строгий синтаксический анализ происходит и с HTML, который не является строгим, могут возникнуть проблемы, если HTML искажен.