Задать вопрос
JRazor
@JRazor
Senior StarkOverFlow Programmer

Как с помощью XPath убрать?

Здравствуйте.

Возник вопрос по Xpath. Имеется вот такой код:

<span class="less-review">I visited this clinic as my wisdom tooth is growing horizontally resulting in bleeding gums,the doctor examined and said the tooth has to go out 
<br/>it might result in the surrounding teeth&#039;s going bad  she explained 
<br/>everything in very layman terms as to why we would extracting it 
<br/>have made reservations with them to get the tooth extracted,overall a  nice experience, 
<br/>
<br/></span>


Хочу при парсинге убрать данные теги и спарсить весь комментарий в одну строку не прибегая к костылям, вроде парсинга дочерних элементов и последующего объединения. Могу ли я это сделать с точки зрения XPath'а?

Заранее огромное спасибо
  • Вопрос задан
  • 757 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
mututunus
@mututunus
Backend developer (Python, Golang)
''.join(html.xpath('/span/text()'))
Ответ написан
nightvich
@nightvich
ITman
hxs = HtmlXPathSelector(response)
data = hxs.xpath('/span/text()').extract()
Ответ написан
Комментировать
mukizu
@mukizu
Думаю нужно копать в сторону функции normalize-space(): stackoverflow.com/questions/11007527/xpath-to-get-...
Ответ написан
Комментировать
glebovgin
@glebovgin
Full Stack Web Developer
А разве не сработает по аналогии с php?
$query = $xpath->query('//span[@class="less-review"]');
$query->item(0)->nodeValue; // тут уже чистый текст без лишних тегов.
Ответ написан
Комментировать
@MrCarlione
Проверить не могу, но думаю необходимо взять родителький тег для указанного вами блока и применить функцию text(). Например, если род. тег div, то выр-е примет вид "//div/text()". В переменную должен попасть весь текст блока без тегов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы