2009-07-24 15 views
22

In questo momento mi ha afferrato con successo l'elemento completo da una pagina HTML con questo:XPath to Parse "SRC" dal tag IMG?

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

per esempio, sarebbe tornato in questo modo:

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

Ma ho solo bisogno l'url SRC (http://example.com/img.jpg). Qualsiasi aiuto?

risposta

53

Sei così vicino a rispondere a te stesso che sono un po 'riluttante a rispondere per te. Tuttavia, il seguente XPath dovrebbe fornire quello che vuoi (a condizione che l'origine sia XHTML, ovviamente).

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

Per ulteriori suggerimenti, controlla W3 Schools. Hanno tutorial eccellenti su queste cose e anche un ottimo riferimento.

9

Utilizzando Hpricot questo funziona:

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

Nel caso in cui si dispone di più di un'immagine, di seguito dà un array:

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

Tuttavia, Nokogiri è many times faster e “can be used as a drop in replacement” per Hpricot.
Ecco la versione per Nokogiri, in cui questo XPath per gli attributi selezione delle opere:

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

o per molte immagini:

doc.search('//img[@class="photo-large"]/@src').to_a 
+2

inciampo su questa domanda, non posso fare a meno di chiedermi: cosa ti fa rispondere che fanno riferimento depencies relativi rubino? Sembra abbastanza azzeccato per me. –

+0

@FabianPas Mi chiedo lo stesso: D –

+0

Haha, è stato un po 'giusto? : p –

0

// img/@ src

si può solo andare con questo se vuoi un link dell'immagine.

esempio:

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