Да, как сказал Den, вам нужно захватить этот внутренний тег, а затем сохранить его как тип str
, чтобы включить этот внутренний тег. В данном решении от Den, он будет захватывать только теги <b>
, а не родительский тег / текст, и нет, если там есть другие типы стилей. Но если есть другие теги, вы можете использовать более общие и найти дочерние элементы тега <a>
вместо того, чтобы специально искать тег <b>
.
По сути, это то, что нужно сделать, это найтитег <a>
и захватите весь текст. Затем он перейдет в дочерние элементы этого тега <a>
, преобразует его в строку, а затем заменит текст из этого родительского текста строкой (которая включает теги)
string = '''<a class="fl" href="https://stackoverflow.com/questio...">
Angular2 <b>Router link not working</b> and then this is in <i>italics</i> and this is in <b>bold</b>
</a>'''
from bs4 import BeautifulSoup, Tag
soup = BeautifulSoup(string, 'html.parser')
parsed_soup = ''
for item in soup.find_all('a'):
if type(item) is Tag and 'a' != item.name:
continue
else:
try:
parent = item.text.strip()
child_elements = item.findChildren()
for child_ele in child_elements:
child_text = child_ele.text
child_str = str(child_ele)
parent = parent.replace(child_text, child_str)
except:
parent = item.text
print (parent)
Вывод:
print (parent)
Angular2 <b>Router link not working</b> and then this is in <i>italics</i> and this is in <b>bold</b>