Python - BeautifulSoup - Невозможно извлечь значение диапазона - PullRequest
0 голосов
/ 17 июня 2020

У меня есть XML с несколькими классами Div / Span Classes, и я изо всех сил пытаюсь извлечь текстовое значение.

   <div class="line">
     <span class="html-tag">
       "This is a Heading that I dont want"
     </span>
     <span>This is the text I want</span>

До сих пор я написал это:

    html = driver.page_source
    soup = BeautifulSoup(html, "lxml")
    spans = soup.find_all('span', attrs={'class': 'html-tag'})[29]
    print(spans.text)

Это, к сожалению, выводит только значение «Это заголовок, который мне не нужен», например,

This is the heading I dont want

Число [29] в коде - это позиция, в которой всегда будет отображаться нужный мне текст.

Я не знаю, как получить нужное мне значение диапазона.

Пожалуйста, не могли бы вы помочь . Спасибо

1 Ответ

1 голос
/ 17 июня 2020

Вы можете выполнить поиск по <div class="line">, а затем выбрать второй <span>.

Например:

txt = '''
   # line 1

   <div class="line">
     <span class="html-tag">
       "This is a Heading that I dont want"
     </span>
     <span>This is the text I dont want</span>
   </div>

   # line 2

   <div class="line">
     <span class="html-tag">
       "This is a Heading that I dont want"
     </span>
     <span>This is the text I dont want</span>
   </div>

   # line 3

   <div class="line">
     <span class="html-tag">
       "This is a Heading that I dont want"
     </span>
     <span>This is the text I want</span>   <--- this is I want
   </div>'''


soup = BeautifulSoup(txt, 'html.parser')
s = soup.select('div.line')[2].select('span')[1]    # select 3rd line 2nd span

print(s.text)

Печать:

This is the text I want
...