Подтвердить что ты не робот

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). Любая помощь?

4b9b3361

Ответ 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?