clear + insert/append
使用 clear + insert 或者 clear + append 可以达到 set 的效果。
示例:设置文本
from bs4 import BeautifulSoup
html_content = '''
<div id="content">
<p>测试01</p>
<span>测试02</span>
</div>
<div>测试03</div>
'''
soup = BeautifulSoup(html_content, 'html.parser')
print('------插入前-----')
print(soup)
content_div = soup.select_one("#content")
content_div.clear()
content_div.insert(0, '<p>插入</p>') # 第1个参数是位置,第2个参数是内容
print('------插入后-----')
print(soup)
执行结果:
------插入前-----
<div id="content">
<p>测试01</p>
<span>测试02</span>
</div>
<div>测试03</div>
------插入后-----
<div id="content"><p>插入</p></div>
<div>测试03</div>
示例:设置 HTML 标签
from bs4 import BeautifulSoup
html_content = '''
<div id="content">
<p>测试01</p>
<span>测试02</span>
</div>
<div>测试03</div>
'''
soup = BeautifulSoup(html_content, 'html.parser')
print('------处理前-----')
print(soup)
content_div = soup.select_one("#content")
new_p = soup.new_tag('p')
new_p.string = '插入'
content_div.clear()
content_div.insert(0, new_p) # 第1个参数是位置,第2个参数是内容
print('------处理后-----')
print(soup)
执行结果:
------处理前-----
<div id="content">
<p>测试01</p>
<span>测试02</span>
</div>
<div>测试03</div>
------处理后-----
<div id="content"><p>插入</p></div>
<div>测试03</div>
string
使用 string 属性可以获取和设置内容。
示例
from bs4 import BeautifulSoup
html_content = '''
<div id="content">
<p>测试01</p>
<span>测试02</span>
</div>
<div>测试03</div>
'''.strip()
soup = BeautifulSoup(html_content, 'html.parser')
content_div = soup.select_one("#content")
content_div.string = 'x<p>'
print(soup)
执行结果:
<div id="content">x<p></div>
<div>测试03</div>