web-dev-qa-db-fra.com

XPath pour analyser "SRC" à partir de la balise IMG?

En ce moment, j'ai réussi à saisir l'élément complet d'une page HTML avec ceci:

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

par exemple, cela retournerait ceci:

<img src="http://example.com/img.jpg" class='photo-large' />

Mais je n'ai besoin que de l'URL SRC ( http://example.com/img.jpg ). De l'aide?

26
dMix

Vous êtes si près de répondre vous-même à cette question que je suis quelque peu réticent à y répondre pour vous. Cependant, le XPath suivant devrait fournir ce que vous voulez (à condition que la source soit XHTML, bien sûr).

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

Pour plus de conseils, consultez Écoles W . Ils ont d'excellents tutoriels sur de telles choses et une excellente référence aussi.

67
Jeff Yates

En utilisant Hpricot cela fonctionne:

doc.at('//img[@class="photo-large"]')['src']

Si vous avez plusieurs images, ce qui suit donne un tableau:

doc.search('//img[@class="photo-large"]').map do |e| e['src'] end

Cependant, Nokogiri est plusieurs fois plus rapide et il “peut être utilisé comme un drop in remplacement ” pour Hpricot.
Voici la version pour Nokogiri, dans laquelle fonctionne ce XPath pour la sélection des attributs:

doc.at('//img[@class="photo-large"]/@src').to_s

ou pour de nombreuses images:

doc.search('//img[@class="photo-large"]/@src').to_a
9
andre-r

// img/@ src

vous pouvez simplement aller avec cela si vous voulez un lien de l'image.

exemple:

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