#html #parsing #web-scraping #xpath #scrapy
#HTML #синтаксический анализ #очистка веб-страниц #xpath #scrapy
Вопрос:
У меня есть HTML-дерево, которое выглядит следующим образом:
<div id="RF4FOEQ3OPBEX" data-hook="review" class="a-section review aok-relative"><div
<div data-hook="review-collapsed" aria-expanded="false" class="a-expander-content reviewText review-text-content a-expander-partial-collapse-content">
<span>
Text line1.
<br>
Text line2.
</span>
Я пытаюсь извлечь весь текст из диапазона со следующим выражением XPath:
//div[@data-hook="review"]//div[@data-hook="review-collapsed"]/span/text()
Однако этот подход возвращает только первую текстовую строку до разрыва? Вопрос в том, как мне правильно подойти к этой проблеме, чтобы извлечь полное текстовое содержимое тега HTML span? Я был бы очень признателен за любую помощь и заранее благодарю вас за поддержку.
Комментарии:
1. xpath(‘// div[@data-hook=»обзор»] //div[@data-hook=»обзор-свернутый»] /span/text()’).getall() в оболочке scrapy
Ответ №1:
используйте //
getall
метод and для получения всего текста внутри определенного элемента
getall
возвращает список, только join
его
txt = "".join(response.xpath('//div[@data-hook="review"]//div[@data-hook="review-collapsed"]/span//text()').getall())