Reputation: 23088
For a tag:
<div class="special_tag"></div>
I want a tag.replace_inner_html('inner')
that results in:
<div class="special_tag">inner</div>
The best I know is replace_with('inner')
which replaces the outer HTML.
Upvotes: 7
Views: 6029
Reputation: 369064
If you want to replace inner text, set string
attribute:
>>> from bs4 import BeautifulSoup
>>>
>>> soup = BeautifulSoup('''
... <div>
... <div class="special_tag"></div>
... </div>
... ''')
>>> elem = soup.find(class_='special_tag')
>>> elem.string = 'inner'
>>> print(elem)
<div class="special_tag">inner</div>
If you want to add tag (or tags), you need to clear
contents, and insert
or append
them (Use new_tag
to create tags):
>>> elem = soup.find(class_='special_tag')
>>> elem.clear()
>>> elem.append('inner')
>>> print(elem)
<div class="special_tag">inner</div>
Upvotes: 11