2009-07-24 15 views
22

Augenblick packte ich erfolgreich das gesamte Element aus einer HTML-Seite mit diesem:XPath zu Parse "SRC" von IMG-Tag?

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

zum Beispiel das ich zurückkehren würde:

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

Aber ich brauche nur die SRC-URL (http://example.com/img.jpg). Irgendeine Hilfe?

Antwort

53

Sie sind so nahe daran, dies selbst zu beantworten, dass ich etwas widerwillig bin, es für Sie zu beantworten. Der folgende XPath sollte jedoch das bereitstellen, was Sie möchten (vorausgesetzt, die Quelle ist natürlich XHTML).

Weitere Tipps finden Sie unter W3 Schools. Sie haben ausgezeichnete Tutorials zu solchen Dingen und eine gute Referenz zu.

9

Mit Hpricot dies funktioniert:

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

Falls Sie mehr als ein Bild haben, folgendes ein Array gibt:

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

jedoch Nokogiri ist many times faster und es “can be used as a drop in replacement” für Hpricot.
hier die Version für Nokogiri, in dem diese XPath für die Auswahl von Attributen funktioniert:

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

oder für viele Bilder:

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

auf dieser Frage Straucheln, kann ich nicht helfen, aber frag dich: Was macht für Sie beantworten Referenzierung Rubin im Zusammenhang Depencies? Scheint ziemlich unerwartet für mich. –

+0

@FabianPas Ich frage mich das gleiche: D –

+0

Haha, es ist schon eine Weile her oder? : p –

0

// img/@ src

Sie gehen können Mit diesem wenn Sie eine Verbindung des Bildes wünschen.

Beispiel:

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