2016-04-12 8 views
1

Какой XPath мне нужно извлечь текст внутри b, который находится внутри li с определенной меткой?XPath для маркированного значения текста?

Пример кода:

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

Пример страницы: http://tiruvallur.click.in/job-vacancy-in-uk-needed-engineers-send-your-cv-c98-v15807437

+0

Я НЕ отменю изменения, я добавил еще 1 строку, почему вы ее удалили? Извините за непонятное с первого раза, я новичок в этом форуме и впервые вижу, как администратор редактирует мой вопрос. – Future

+0

Я не администратор, просто опытный пользователь с правами на редактирование, которые пытаются сделать сайт лучше для текущих и будущих читателей. Не стесняйтесь корректировать мои изменения; это ваш вопрос. Я просто прошу вас, чтобы вы не отвергли их всех, не понимая, почему я их создал. – kjhughes

+0

Давайте вернемся к сути вашего вопроса. Если вы сообщаете, как вы использовали предложенные ответы и какие результаты (в том числе конкретные ошибки) вы получили, мы сможем решить ваш тупик. Это может помочь вам узнать, что оба XPaths, которые я предоставил, были протестированы как против ваших образцов (завернуты в общий корневой элемент), так и во всех случаях работали по запросу. – kjhughes

ответ

1

Это выражение XPath

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

подберет

Full Time 

для вашего примера.

С другой стороны, и, возможно, более надежно, вы можете взять подстроку после метки на значение строки li

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

также выберет ту же строку

Full Time 

Для устранения паразитных пробелов , использование normalize-space():

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

Ваш XPATH ничего не извлекает с этого сайта – Future

+0

Оба предоставленные мной XPath работают как на ваших примерах, так и на веб-странице, связанной с вашим вопросом. На веб-странице на самом деле больше пробелов, но вы можете исправить это достаточно легко с помощью 'normalize-space()'. Ответ обновлен. Помимо этого, если он не работает для вас, вы делаете какую-то другую ошибку на этом пути. Дважды проверьте свою работу и/или отправьте сообщение точно, что вы делаете, чтобы мы могли помочь вам проверить это. – kjhughes

0

Попробуйте это: // * [содержит (текст(), 'ваш-метки имя')]/б/текст()

Для экс:

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

Ваш XPATH ничего не извлекает с этого сайта – Future

+0

Я не знаю, с какими проблемами вы сталкиваетесь, дайте мне несколько скриншотов вашего кода. Я пробовал это и отлично работал. Вы можете увидеть следующий снип :: [изображение] (https://s26.postimg.org/y0h8kc47d/xpath.png) –

+0

Я использую программное обеспечение www.import.io, и ваш XPATH не извлекает ничего, даже если он появляется работа в Firefox. После нескольких попыток я нашел XPATH, который извлекает данные: // li [содержит (., «Тип задания»)]/b – Future

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