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


person dMix    schedule 24.07.2009    source источник


Ответы (3)


Вы так близки к тому, чтобы ответить на этот вопрос самостоятельно, что я несколько неохотно отвечаю на него за вас. Однако следующий XPath должен предоставить то, что вы хотите (конечно, при условии, что источником является XHTML).

//img[@class='photo-large']/@src

Дополнительные советы можно найти на странице W3 Schools. У них есть отличные учебники по таким вещам, а также отличный справочник.

person Jeff Yates    schedule 24.07.2009

При использовании 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
person andre-r    schedule 27.09.2009
comment
Наткнувшись на этот вопрос, я не могу не задаться вопросом: что заставляет вас отвечать, ссылаясь на зависимости, связанные с ruby? Мне кажется довольно неожиданно. - person Fabian Pas; 16.12.2013
comment
@FabianPas Я спрашиваю себя о том же: D - person andre-r; 17.12.2013

//изображение/@src

вы можете просто пойти с этим, если хотите ссылку на изображение.

пример:

<img alt="" class="avatar width-full rounded-2" height="230" src="https://avatars3.githubusercontent.com/...;s=460" width="230">
person nithish peddi    schedule 09.02.2017