Как скопировать текст в игнорируя вложенные элементы? 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 шт):
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> и убираем их. После того как убрали, могут лишние двойные пробелы остаться.
После удаления можно забирать текст без вложенных тегов ?
Возможно есть более элегантное решение, но это рабочим должно быть под Вашу задачу.