XPath для анализа "SRC" из тега IMG?
Сейчас я успешно захватил полный элемент с HTML-страницы с помощью этого:
//img[@class='photo-large']
например, он вернет это:
<img src="http://example.com/img.jpg" class='photo-large' />
Но мне нужен только URL-адрес SRC (http://example.com/img.jpg). Любая помощь?
Ответы
Ответ 1
Вы так близко отвечаете на это сами, что я несколько неохотно отвечаю на него за вас. Однако следующий XPath должен предоставить то, что вы хотите (при условии, что источник - XHTML, конечно).
//img[@class='photo-large']/@src
Для получения дополнительных советов посетите W3 Schools. У них отличные уроки по таким вещам и отличная рекомендация.
Ответ 2
Используя Hpricot, это работает:
doc.at('//img[@class="photo-large"]')['src']
Если у вас есть несколько изображений, следующее дает массив:
doc.search('//img[@class="photo-large"]').map do |e| e['src'] end
Однако Nokogiri во много раз быстрее и "можно использовать в качестве замены в замене" для Hpricot.
Здесь версия для Nokogiri, в которой работает этот XPath для выбора атрибутов:
doc.at('//img[@class="photo-large"]/@src').to_s
или для многих изображений:
doc.search('//img[@class="photo-large"]/@src').to_a
Ответ 3
//IMG/@SRC
вы можете просто пойти с этим, если хотите ссылку изображения.
Пример:
<img alt="" class="avatar width-full rounded-2" height="230" src="https://avatars3.githubusercontent.com/...;s=460" width="230">
Ответ 4
Что если класс отсутствует для img?