Используя python 2.7.6 и BeautifulSoup 4.3.2 я нашел ответ Марсело, чтобы дать пустой список.Однако это сработало для меня:
[x.parent for x in bSoup.findAll('span') if x.text == 'Text2'][0]
В качестве альтернативы, для смехотворно перерабатываемого решения (по крайней мере, для этой конкретной проблемы, но, возможно, было бы полезно, если вы будете выполнять фильтрацию по критериям, слишком длинным дляв достаточно понятном выражении списка) вы можете сделать:
def hasText(text):
def hasTextFunc(x):
return x.text == text
return hasTextFunc
, чтобы создать фабрику функций, затем
hasTextText2 = hasText('Text2')
filter(hasTextText2,bSoup.findAll('span'))[0].parent
, чтобы получить ссылку на родительский тег, который вы искали