Как скопировать текст в игнорируя вложенные элементы? beautifulsoup4

На странице есть динамическая таблица, которая обновляется раз в 30 секунд. С помощью beautifulsoup4 и lxml нахожу нужную ячейку и копирую ее текст current_l[item] = current_d[8].find("span").find("span").text. Но редко (7/3400) в скопированном тексте находится вложенный span Лак для волос <span class="Jcodx">500мл</span> schwarzkopf. Как избавиться от этого?


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

Автор решения: DiMithras
from bs4 import BeautifulSoup
question = '<span>Лак для волос <span class="Jcodx">500мл</span> schwarzkopf</span>'
soup = BeautifulSoup(question)
span = soup.find("span")
for el in span.find_all('span'):
    el.decompose()
span.text.replace('  ',' ')
Вывод:
'Лак для волос schwarzkopf'

.decompose() удаляет элемент из дерева. Т.е. мы проходимся по детям элемента, ищем вложенные <span> и убираем их. После того как убрали, могут лишние двойные пробелы остаться.

После удаления можно забирать текст без вложенных тегов ?

Возможно есть более элегантное решение, но это рабочим должно быть под Вашу задачу.

→ Ссылка