2014-02-08 3 views
0

Я пытаюсь извлечь некоторые слова из html-документа с помощью XPath. Синтаксис '//div[@class="adsmanager_ads_price"]/text()[3]' дает мне строку Name: Tim. Как изменить синтаксис для получения только Tim? Но мне нужны слова после Name:, потому что имя может быть более одного слова.Синтаксис XPath для извлечения последнего слова в строке

+0

Я смущен вопросом вашего вопроса по сравнению с текстом вопроса: вы хотите извлечь последнее слово * (т.е. часть после последнего пробела или аналогичные) или * последние слова * (как описано в вашем вопросе, часть после последнего двоеточия)? –

+0

Где находится HTML ??? –

+0

На самом деле мне нужны слова после 'Name:' ​​ – Goran

ответ

2

Вы можете использовать substring-after() для этого:

substring-after(//div[@class="adsmanager_ads_price"]/text()[3], ':') 

будет получить всю информацию после :

substring-after(//div[@class="adsmanager_ads_price"]/text()[3], 'Name:') 

получите все после того, как Name:

ПРИМЕЧАНИЕ: substring-after() может быть только используется в XPath 2.0. Если вы используете XPath 1.0, вы должны сделать подстроку в своем коде ...

+0

'normalize-space()' может использоваться для «обрезания» пробелов –

+0

Кажется, я не могу использовать substring-after(), или я не знаю, как его реализовать потому что мой код является частью программного обеспечения, где вся строка кода выглядит следующим образом: name = data.xpath ('// div [@ class = "adsmanager_ads_price"]/text() [3]'). extract() – Goran

+0

Какая у вас ошибка? И я считаю, что это должно быть реализовано как: 'name = data.xpath ('substring-after (// div [@ class =" adsmanager_ads_price "]/text() [3]," Name: ")'). Extract () '. Также обратите внимание, что 'substring-after()' доступно только в XPath 2.0. Если вы используете XPath 1.0, вы не можете это сделать, и вы должны обрабатывать подстроку в вашем скрипте/языке программирования ... –

Смежные вопросы