У меня есть такое содержание файла HTML:
<a class="bf" title="Link to book" href="/book/229920/">book name</a>
Помогите мне создать выражение XPath для получения текста ссылки (название книги). Я пытаюсь использовать /a
, но выражение оценивает без результатов.
Вы пробовали
//a
?
Более конкретный вариант лучше:
//a[@class='bf' and starts-with(@href, '/book/')]
Обратите внимание, что он выбирает элемент. В вашей среде легко извлечь текстовое значение этого узла с помощью стандартных методов DOM (например, свойства
.textContent
).
Для выбора фактического текстового узла см. другие ответы в этой теме.
Если контекст - это весь документ, вам, вероятно, следует использовать //
вместо /
. Также вам может потребоваться (не уверенный в этом) спуститься еще на один уровень, чтобы получить текст.
Я думаю, это должно выглядеть так
//a/text()
РЕДАКТИРОВАТЬ: Как указал Томалак, это текст ()
не текст
Это также зависит от остальной части вашего документа. Если вы используете //
в начале, то будут возвращены все совпадающие узлы, что может быть слишком много результатов, если у вас есть другие ссылки в документе.
Кроме того, возможным выражением xpath является //a/text()
.
Выбранный вами вариант /a
возвращает только сам тег a
-, если он является корневым элементом. Чтобы получить текст ссылки, нужно добавить часть /text()
.