Как использовать содержит () в XPath? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь собрать информацию с веб-страницы и не могу найти правильный XPath для ее поиска. Вот кусок с сайта:

<div class="posted">
  <div>
    June 20, 2018
  </div>
</div>

Я хочу найти на каждой странице этот класс деления с надписью «опубликовано», а затем вернуть все под ним в виде строки. (Грязная строка в порядке; я просто буду использовать "if" 2018 "в" возможной дате "" для поиска года) Вот что я пытаюсь:

possibleDate = str(tree.xpath("//div[contains(@class, ’posted’)]//@text"))

Там написано, что это недопустимое выражение.
Что я делаю не так?

1 Ответ

0 голосов
/ 26 июня 2018

Сначала замените символы на символы ', окружающие posted.

Затем замените @text на text(), чтобы устранить синтаксическую ошибку XPath.

Кроме того, вы можете использовать нормализованное строковое значение строки выбранного div вместо выделения текстовых узлов:

possibleDate = str(tree.xpath("normalize-space(//div[@class='posted'])")

Это будет абстрагироваться от вариаций разметки, вложенных в целевой div.

См. Также: xpath: найти узел, атрибут класса которого соответствует значению, а текст которого содержит определенную строку

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