Как получить текст блока?

Есть структура блока

<div id="test">
  <span class="spoiler">Текст 1</span>
  Lorem <b>ipsum</b> dolor sit amet
</div>

Как мне достать текст "Lorem ipsum dolor sit amet" не затрагивая тег span? Библиотека BeautifulSoup


Ответы (2 шт):

Автор решения: gil9red

Можно удалить тег span перед тем как доставать текст:

from bs4 import BeautifulSoup

root = BeautifulSoup("""
<div id="test">
  <span class="spoiler">Текст 1</span>
  Lorem <b>ipsum</b> dolor sit amet
</div>
""", 'html.parser')

test_el = root.select_one('#test')
test_el.span.decompose()
print(test_el.text.strip())
# Lorem ipsum dolor sit amet
→ Ссылка
Автор решения: Сергей Ш
from bs4 import BeautifulSoup

root = BeautifulSoup("""
<div id="test">
  <span class="spoiler">Текст 1</span>
  Lorem <b>ipsum</b> dolor sit amet
</div>
""", 'html.parser')

test_el = list(root.stripped_strings)
print(' '.join(test_el[1:]))
# Lorem ipsum dolor sit amet
→ Ссылка