xpath
  • union
  • data-extraction
  • 2016-06-21 10 views 0 likes 
    0

    Vielen Dank im Voraus für das Lesen.xPath Union Anweisung mit Funktionen

    Ich verwende $x() xPath Evaluator der Chrome-Konsole.

    Ich muss etwas wie $x("e1 | e2") geformt übereinstimmen.

    In meinem Fall:

    • e1:

      (//div[@class='seven columns omega']//form//div[@class='items_left']//text())[2]

    • e2

      (substring-after(//div[@class='seven columns omega']//span[@class='sold_out']/text(),' - '))

    Sie beide Werke in der einzigen Art und Weise, aber wenn ich sie kombinieren möchte ich erhalten in

    gerade stecken

    „Fehler beim Ausführen‚auswerten‘...“

    PS Das Problem e2 Funktion substring-after ist, ohne es funktioniert die Gewerkschaft.

    Irgendwelche Ideen? Hier sind die 2 Quellen i zu extrahieren bin versucht:

    Thanks again :)

    +0

    Sie können den Union-Operator '|' nicht für einen String-Wert verwenden, Sie können nur die Vereinigung von Knotenmengen berechnen. –

    +0

    @MartinHonnen Danke für die Antwort. Gut zu wissen, vor wenigen Tagen auf Xpath. Es gibt eine Problemumgehung, die ich für meinen Zweck verwenden kann? – GrayFox

    +0

    Welche Art von Ergebnis möchten Sie, die Verkettung der beiden Ergebnisse? Es gibt nicht viel, was man mit reinem XPath machen kann, aber in der Chrome-Konsole benutzt man sowieso Javascript, also kann man vielleicht $ x ("div [@ class = 'sieben Spalten Omega'] // form // div [ @ class = 'items_left'] // text()) [2] ") + $ x (" (substring-nachher // div [@ class = 'sieben Spalten Omega'] // span [@ class = 'sold_out ']/text(),' - ')) ")'. –

    Antwort

    1

    Basierend auf Ihre Kommentare, die Sie Zeichenfolge wollen Werte und erwarten nur einen dieser Ausdrücke, um etwas auf der gleichen Seite zu finden, können Sie einfach versuchen,

    var result = $x("string((//div[@class='seven columns omega']//form//div[@class='items_left']//text())[2])") + $x("(substring-after(//div[@class='seven columns omega']//span[@class='sold_out']/text(),' - '))") 
    
    +0

    Ahahah, das ist richtig! Ich habe gerade diese Lösung gefunden! Danke an Ihre vorherigen Kommentare offensichtlich: D Wirklich funktioniert, aber ich benutze "concat" -Funktion, anstelle von "+" Operator, ich schätze wirklich, dass sie beide funktioniert. Gelöst :) – GrayFox

    Verwandte Themen