我正在尝试使用json中包含的html字符串填充许多模板化的html文档。例如,我的html可能看起来像:
<div class="replace_this_div">
<div>
<p>this text</p>
<p>should be replaced</p>
</div>
</div>
替换形式为字符串形式,如下所示:
"<p>My replacement code might have standard paragraphs, <a href="fake_link">links</a>, or other html elements such as lists.</p>"
然后,它应该看起来像这样:
<div class="replace_this_div">
"<p>My replacement code might have standard paragraphs, <a href="fake_link">links</a>, or other html elements such as lists.</p>"
</div>
我在BeautifulSoup中弄乱了一些,试图做到这一点。我遇到的问题是,即使我只是想替换指定div中的所有内容,我也无法弄清楚如何使用已经格式化为html的字符串(特别是beautifulsoup使用标签的方式)来做到这一点。 / p>
有人对此有任何见识吗?谢谢!
答案 0 :(得分:2)
您可以使用clear()清除标签的内容。然后,通过调用构造函数从字符串中创建BeautifulSoup对象。然后使用append()添加原始标签。
from bs4 import BeautifulSoup
html="""
<div class="replace_this_div">
<div>
<p>this text</p>
<p>should be replaced</p>
</div>
</div>
"""
new_content=u'<p>My replacement code might have standard paragraphs, <a href="fake_link">links</a>, or other html elements such as lists.</p>'
soup=BeautifulSoup(html,'html.parser')
outer_div=soup.find('div',attrs={"class":"replace_this_div"})
outer_div.clear()
outer_div.append(BeautifulSoup(new_content,'html.parser'))
print(soup.prettify())
输出
<div class="replace_this_div">
<p>
My replacement code might have standard paragraphs,
<a href="fake_link">
links
</a>
, or other html elements such as lists.
</p>
</div>