Очистка текста между элементами в Scrapy

#python #xpath #scrapy #css-selectors

#python #xpath #scrapy #css-селекторы

Вопрос:

Я использую Scrapy и пытаюсь очистить что-то вроде этого:

 <html>
   <div class='hello'>
    some elements
     .
     .
     .
   </div>
   <div class='hi there'>
       <div>
          <h3> title </h3>
          <h4> another title </h4>
          <p> some text ..... </p>
           "some text without any tag"
          <div class='article'>
            some elements
           . 
           .
          </div>
          <div class='article'>
            some elements
           . 
           .
          </div>
          <div class='article'>
            some elements
           . 
           .
          </div>
       </div>
     </div>
</html>
  

и если я хочу извлечь текст из всех элементов в div с именем класса «привет» и перед разделами с именем класса «article», есть ли какой-либо возможный способ удаления с помощью селекторов XPath или CSS?

Ответ №1:

Никогда не использовал Scrapy.

Понятия не имею, какие функции у него есть, но,

 //div[@class='hi there']/div/(div[@class='article'])[1]/preceding-sibling::*
  

выбирает элементы перед div с классом «article» и,

 //div[@class='hi there']/div/(div[@class='article'])[1]/preceding-sibling::text()
  

предоставляет вам внутренние тексты перед разделом статьи.