Beautifulsoup не может найти тег по тексту

Beautifulsoup внезапно не может найти тег по его тексту.

У меня есть html, в котором появляется этот тег:

<span class="date">Telefon: <b>+421 902 808 344</b></span> 

BS4 не может найти этот тег:

 telephone = soup.find('span',{'text':re.compile('.*Telefon.*')}) print telephone >>> None 

Я пробовал много способов, как

find('span',text='Telefon: ') или find('span', text=re.compile('Telefon: .*')

Но ничего не работает. Я уже пытался изменить html.parser на lxml .

Что может быть неправильным?

BeautifulSoup рассматривает строку Telefon: как bs4.element.NavigableString внутри тега span . Таким образом, вы можете найти его с помощью

 import bs4 import re soup = bs4.BeautifulSoup('<span class="date">Telefon: <b>+421 902 808 344</b></span>') for span in soup.find_all('span', {'class':"date"}): if span.find(text=re.compile('Telefon:')): for text in span.stripped_strings: print(text) # Telefon: # +421 902 808 344 

Или вы можете напрямую использовать lxml:

 import lxml.html as LH root = LH.fromstring('<span class="date">Telefon: <b>+421 902 808 344</b></span>') for span in root.xpath('//span[@class="date" and contains(text(), "Telefon:")]'): print(span.text_content()) # Telefon: +421 902 808 344