2016-04-12 9 views
1

Welchen XPath brauche ich, um den Text innerhalb b zu extrahieren, der in einem li mit einer bestimmten Bezeichnung gefunden wird?XPath für beschrifteten Textwert?

Beispielcode:

<li>Job category:<b>Engineering</b></li> 
<li>Job Type:<b>Full Time</b></li> 

Beispielseite: http://tiruvallur.click.in/job-vacancy-in-uk-needed-engineers-send-your-cv-c98-v15807437

+0

Ich habe die Änderungen NICHT rückgängig gemacht, ich habe nur 1 weitere Zeile hinzugefügt, warum Sie es gelöscht haben? Es tut mir leid, dass ich von Anfang an unklar bin. Ich bin neu in diesem Forum und sehe zum ersten Mal, dass ein Administrator meine Frage bearbeitet. – Future

+0

Ich bin kein Administrator, nur ein erfahrener Benutzer mit Bearbeitungsrechten, der versucht, die Seite für aktuelle und zukünftige Leser besser zu machen. Bitte zögern Sie nicht, meine Änderungen anzupassen; Es ist deine Frage. Ich bitte nur, dass Sie sie nicht alle ablehnen, ohne zu verstehen, warum ich sie gemacht habe. – kjhughes

+0

Kommen wir zurück auf den Inhalt Ihrer Frage. Wenn Sie genau angeben, wie Sie die vorgeschlagenen Antworten verwendet haben und welche Ergebnisse (einschließlich spezifischer Fehler) Sie erhalten haben, sollten wir in der Lage sein, Ihre Sackgasse zu lösen. Es kann Ihnen helfen zu wissen, dass die zwei XPaths, die ich zur Verfügung gestellt habe, sowohl gegen Ihre Samples getestet wurden (in einem gemeinsamen Root-Element verpackt) und in allen Fällen wie gewünscht gearbeitet wurden. – kjhughes

Antwort

1

Dieser XPath-Ausdruck

string(//li[starts-with(., 'Job Type:')]/b) 

wählt

Full Time 

für Ihr Beispiel.

Alternativ und möglicherweise robuste, könnte man den Teil nach dem Etikett auf dem String-Wert des nehmen li

substring-after(//li[starts-with(., 'Job Type:')], 'Job Type:') 

wählt auch die gleiche Zeichenfolge

Full Time 

störende Leerzeichen zu beseitigen , verwenden Sie normalize-space():

normalize-space(substring-after(//li[starts-with(., 'Job Type:')], 'Job Type:')) 
+0

Ihr XPATH extrahiert nichts von dieser Website – Future

+0

Beide XPaths, die ich zur Verfügung gestellt habe, funktionieren sowohl auf Ihren Beispielen als auch auf der mit Ihrer Frage verknüpften Webseite. Die Webseite hat tatsächlich mehr Leerzeichen, aber Sie können das einfach mit 'normalize-space()' beheben. Antwort aktualisiert Abgesehen davon, wenn es nicht für Sie funktioniert, machen Sie einen anderen Fehler auf dem Weg. Überprüfen Sie Ihre Arbeit und/oder posten Sie genau, was Sie tun, damit wir Ihnen helfen können, es zu überprüfen. – kjhughes

0

Versuchen Sie folgendes: // * [enthält (text(), 'your-Label-Name')]/b/text()

Für Ex:

//*[contains(text(),'Job category')]/b/text() 
+0

Ihr XPATH extrahiert nichts von dieser Website – Future

+0

Ich weiß nicht, welche Probleme Sie haben, geben Sie mir einige Screenshots Ihres Codes. Ich habe das oben genannte versucht und funktioniert gut. Sie können den folgenden Ausschnitt sehen: [image] (https://s26.postimg.org/y0h8kc47d/xpath.png) –

+0

Ich verwende www.import.io Software und Ihr XPATH extrahiert nichts, auch wenn es scheint arbeite in Firefox. Nach mehreren Versuchen habe ich einen XPATH gefunden, der die Daten extrahiert: // li [contains (., "Job Type")]/b – Future