У меня есть HTML следующим образом:В BeautifulSoup, Игнорировать дочерние элементы Хотя Получение родительского элемента данных
<html>
<div class="maindiv">
text data here
<br>
continued text data
<br>
<div class="somename">
text & data I want to omit
</div>
</div>
</html>
Я пытаюсь получить только текст найден в maindiv
элемента, не получая текстовые данные, найденные в somename
элемент. В большинстве случаев, по моему опыту, большинство текстовых данных содержится в некотором дочернем элементе. Я столкнулся с этим конкретным случаем, однако, когда данные, кажется, содержат несколько will-nilly и немного сложнее фильтровать.
Мой подход заключается в следующем:
textdata= soup.find('div', class_='maindiv').get_text()
Это получает все текстовые данные, найденные в maindiv
элемента, а также текстовые данные, найденные в элементе somename
Див.
Логика, которую я хотел был бы использовать больше в строках: textdata = soup.find('div', class_='maindiv').get_text(recursive=False)
, который опускает любые текстовые данные, найденные в пределах somename
.
Я знаю, что аргумент recursive=False
работает для поиска только элементов уровня родительского уровня при поиске структуры DOM с использованием BeautifulSoup, но не может использоваться с методом .get_text()
.
Я понял подход к нахождению всего текста, а затем вычитал строковые данные, найденные в элементе somename
, из строковых данных, найденных в элементе maindiv
, но я ищу что-то более эффективное.
Что делать, если есть более чем один уш? или какой-либо другой div без класса как нечто иное, чем 'somename'? – nu11p01n73R
В идеале, мне нужен подход, который можно было бы адаптировать для обработки обеих ситуаций. – theeastcoastwest