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.,