XPath, um eine Tabellenzeile auszuwählen, die eine Zelle enthält, die den angegebenen Text enthält

Lesezeit: 2 Minuten

Benutzer-Avatar
KClough

Wie wähle ich eine Tabellenzeile aus, die eine Zelle mit angegebenem Text mit XPath enthält?

  • Gute Frage, +1. Siehe meine Antwort für eine Erklärung und Lösung. Beachten Sie, dass die Antwort von stefan.natchev nicht alle Zeilen mit der gewünschten Eigenschaft auswählt. 🙂

    – Dimitre Nowatschew

    5. Januar 2011 um 19:42 Uhr


Verwenden:

ExpressionSelectingTable/tr[td//text()[contains(., 'targetString')]]

Das heisst:

Wählen Sie alle aus tr das ist ein untergeordnetes Element einer beliebigen Tabelle, die durch den Ausdruck ausgewählt wird ExpressionSelectingTable und das (die tr) hat mindestens eine td Kind, das mindestens einen Textknoten-Nachkommen hat, der die Zeichenfolge enthält 'targetString'

  • Ich denke, Sie möchten vielleicht ExpressionSelectingTable//tr[...]da die Zeilen Kinder von sein könnten thead, tbodyund/oder tfoot.

    – Phrogz

    6. Januar 2011 um 2:01 Uhr


  • @Phrogz: Ja, das ist eine gute Beobachtung, danke. Mein HTML ist ein bisschen rostig … Ich habe das absichtlich gemacht, weil es möglicherweise eine Tabelle in einer Tabelle gibt und ich die äußere Tabelle nicht auswählen wollte.

    – Dimitre Nowatschew

    6. Januar 2011 um 2:42 Uhr


  • Vielleicht lohnt es sich, die Bekanntmachung zu verschieben thead, tbody und tfoot zur Antwort selbst, denn hier bin ich beim Schreiben zu kurz gekommen ExpressionSelectingTable. Ich vermute, es ist üblich.

    – vgl

    30. Mai 2016 um 9:55 Uhr


  • @DimitreNovatchev, Hallo. Sorry für meine dumme Frage. Ich habe versucht, den von Ihnen vorgeschlagenen Code in meinem Code wie folgt zu verwenden: xpath(‘//table[@class=”table table–collapsible”]/tbody[@class=”tbody”]/’ ‘tr[td//text()[contains(., “1 minute driving “)]]’), als ich versuchte, die Ausgabe zu drucken, zeigt es mir die Ausgabe wie folgt: Ich möchte die zurückgegebenen Werte dieser Zeile sehen. Wie kann ich auf den Inhalt dieser Rückgabezeile in Python zugreifen?

    – Reza_M

    11. Mai 2017 um 17:26 Uhr


Um Zeilen mit Zellen auszuwählen, die Text enthalten, würden Sie diesen XPath-Ausdruck verwenden:

//tr/td[normalize-space(text())="Banana"]/..

Dies wählt beliebige aus td das den Text “Banana” enthält und dann das Elternteil mit auswählt /..

  • Dies beantwortet nicht die Frage – was ausgewählt werden muss, sind Zeilen mit Zellen, die Banane enthalten. Ihre Antwort wählt kein tr auswith a single td`, das den Wert von ‘Apples and a Banana’ hat

    – Dimitre Nowatschew

    5. Januar 2011 um 20:34 Uhr

  • Außerdem ist es kein guter Stil, einen bestimmten Knoten zu erreichen und dann zurückzuklettern – in den meisten Fällen gibt es einen äquivalenten Ausdruck, der nur Vorwärtsachsen verwendet.

    – Dimitre Nowatschew

    5. Januar 2011 um 20:36 Uhr

  • Obwohl die Frage nach einer “enthält”-Abfrage gestellt wurde, freue ich mich über diesen Tipp zur Verwendung von “normalize_space”, wenn Sie möchten, dass der Text mit Ausnahme von Leerzeichen genau übereinstimmt.

    – Mark Berry

    19. September 2012 um 0:17 Uhr

1283050cookie-checkXPath, um eine Tabellenzeile auszuwählen, die eine Zelle enthält, die den angegebenen Text enthält

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy