Seite 1 von 1

xpath: <a href ... aus <img>...</img></a> bekommen

Verfasst: Montag 5. November 2012, 18:13
von StefanLawl
Hallo, mal wieder in xpath Problem. Habe mich nach Tutorials für xpath erkundigt, allerdings finde ich keine Lösung. Ich erhalte entweder Error oder eine leere Liste.

Ich habe (veranschaulicherweise abgekürzt) folgenden HTML Code:

Code: Alles auswählen

<a href="url.html"> <img src="http://urlx.com/img.gif" alt="TEST TEXT" title="TEST TEXT" width="10"> &nbsp;Text Text</a>
Nun habe ich versucht "url.html" zu bekommen:

Code: Alles auswählen

doc.xpath('//a/@href')
funktioniert logischerweise nicht (bzw gibt mir zu viel aus), also habe ich weiter probiert:

Code: Alles auswählen

doc.xpath('//a//img[@alt="TEST TEXT"]/@href)
gibt leider eine leere Liste aus :K ebenso wie

Code: Alles auswählen

doc.xpath('//a/@href//img[@alt="TEST TEXT"])
Ich verzweifle :/ Könnte mir jemand erklären, wie man sowas bewerkstelligt? :mrgreen:

Stefan

Re: xpath: <a href ... aus <img>...</img></a> bekommen

Verfasst: Montag 5. November 2012, 18:39
von BlackJack
@StefanLawl: Wenn ich das richtig verstanden habe, möchtest Du nach `img`-Tags mit dem `title`-Attributwert 'TEST TEXT' suchen. Und dort dann ein Element höher das `href`-Attribut auslesen. Eine Ebene höher kommt man wie bei den meisten Dateisystemen mit ``..``:

Code: Alles auswählen

In [23]: node.xpath('//img[@title="TEST TEXT"]')
Out[23]: [<Element img at 0x2404b70>]

In [24]: node.xpath('//img[@title="TEST TEXT"]/..')
Out[24]: [<Element a at 0x2404a80>]

In [25]: node.xpath('//img[@title="TEST TEXT"]/../@href')
Out[25]: ['url.html']

Re: xpath: <a href ... aus <img>...</img></a> bekommen

Verfasst: Montag 5. November 2012, 18:50
von StefanLawl
Mist, danke! Ich habe von ".." gelesen, dachte aber man müsste es wie folgt verwenden:

Code: Alles auswählen

/..img[@title=[TEST TEXT]
Und das hat immer Fehler hervorgefunden.

Vielen Dank! :)