Извлечение полного текста из элемента HTML span с помощью выражения XPath

#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())