xpath выражение для выбора текста по ссылке - PullRequest
9 голосов
/ 22 февраля 2010

У меня есть такое содержание html файла:

<a class="bf" title="Link to book" href="/book/229920/">book name</a>

Помогите мне построить выражение xpath, чтобы получить текст ссылки (название книги). Я пытаюсь использовать /a, но выражение оценивается без результатов.

Ответы [ 3 ]

15 голосов
/ 22 февраля 2010

Если контекстом является весь документ, вам, вероятно, следует использовать // вместо /. Также вам может понадобиться (не уверен в этом) спуститься еще на один уровень, чтобы получить текст.

Я думаю, это должно выглядеть так

//a/text()

РЕДАКТИРОВАТЬ: Как указал Томалак, это text() не text

3 голосов
/ 22 февраля 2010

Это зависит также от остальной части вашего документа. Если вы вначале используете //, будут возвращены все подходящие узлы, что может быть слишком много, если в вашем документе есть другие ссылки.

Кроме того, возможное выражение xpath равно //a/text().

Попытка /a, которую вы пробовали, возвращает только тег a, если он является корневым элементом. Чтобы получить текст ссылки, необходимо добавить часть /text().

2 голосов
/ 22 февраля 2010

Вы пробовали

//a

Чем конкретнее, тем лучше:

//a[@class='bf' and starts-with(@href, '/book/')]

Обратите внимание, что здесь выбирается элемент <a> . В вашей хост-среде легко извлечь текстовое значение этого узла с помощью стандартных методов DOM (например, свойство .textContent).

Чтобы выбрать фактический текстовый узел, см. Другие ответы в этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...