Получить 2 отдельных значения xpath из одного диапазона с разрывом строки - PullRequest
0 голосов
/ 09 марта 2019

У меня есть мой HTML, который выглядит следующим образом:

<span>
Word 1
Sentence 1
</span>

Я могу извлечь его с помощью:

//span/text()

, что дает мне

Word 1
Sentence 1

Возможно ли в XPATH получить / извлечь Word 1 и Предложение 1 отдельно?(Извлечение XPath в Python для Scrapy)

Я пробовал:

//span/text()[1]
//span/text()[2]

substring-before(//span/text(),'\n')

, но оба были дикими догадками и не работали.

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Вы можете получить первый предмет «Слово 1» с помощью

normalize-space(substring-before(substring-after(translate(span/text(),'&#xd;',''),'&#xa;'),'&#xa;'))

и получите второй предмет "Приговор 1" с

normalize-space(substring-after(substring-after (translate(span/text(),'&#xd;',''),'&#xa;'),'&#xa;'))

Вы можете удалить normalize-space(...), если вам это не нужно.
Узел контекста должен быть родительским для span, в противном случае вы должны добавить к выражению //. Ваша основная проблема заключалась в том, что перед первым элементом был перевод строки (\n).

EDIT:
Я добавил решение для обработки CR char для Windows 'CRLF. Он просто удаляет символ CR и действует на символ LF.

0 голосов
/ 09 марта 2019

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

Затем обработайте строку вывода в соответствии с вашими потребностями.

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