BS4: получение текста в теге
Я использую красивый суп. Существует такой тег:
<li><a href="example"> s.r.o., <small>small</small></a></li>
Я хочу получить текст, которого нет в <small>
тег. Поэтому я хочу иметь "ы.Р.о.," в качестве выходного.
пробовал find('li').text[0]
но это не работает.
Есть ли команда в BS4, которая может это сделать?
спасибо
2 ответов
одним из вариантов было бы получить первый элемент из contents
на a
элемент:
>>> from bs4 import BeautifulSoup
>>> data = '<li><a href="example"> s.r.o., <small>small</small></a></li>'
>>> soup = BeautifulSoup(data)
>>> print soup.find('a').contents[0]
s.r.o.,
другим было бы найти small
тег и получить предыдущий одноуровневый элемент:
>>> print soup.find('small').previous_sibling
s.r.o.,
Ну, есть все виды альтернативных / сумасшедших вариантов также:
>>> print next(soup.find('a').descendants)
s.r.o.,
>>> print next(iter(soup.find('a')))
s.r.o.,
использовать .дети!--3-->
soup.find('a').children.next()
s.r.o.,