用BeautifulSoup替换内部HTML? - python

对于标签:

<div class="special_tag"></div>

我想要一个tag.replace_inner_html('inner')导致:

<div class="special_tag">inner</div>

我所知道的最好的是replace_with('inner'),它替换了外部HTML。

python大神给出的解决方案

如果要替换内部文本,请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>

如果要添加标签,则需要clear contents,然后insertappend(使用new_tag创建标签):

>>> elem = soup.find(class_='special_tag')
>>> elem.clear()
>>> elem.append('inner')
>>> print(elem)
<div class="special_tag">inner</div>