<p>这是一个相当复杂的代码,但这就是如何做到的:</p>
<pre><code>from bs4 import BeautifulSoup
html = """
<div id="root">
</div>
"""
# parse the root
root = BeautifulSoup(html)
# create the child
child = BeautifulSoup('<div id="child" />')
# create the grandchild under the child, and append grandchild to child
grandchild = child.new_tag('div', attrs={'id': 'grandchild'})
child.div.append(grandchild)
# create the child under the root, and append child to root
root.new_tag(child.html.contents[0].div)
root.div.append(child.html.contents[0].div)
</code></pre>
<p>请注意:</p>
<ul>
<li><p>如果打印<code>root</code>:</p>
<pre><code> [...]
print(root.prettify())
</code></pre>
<p>输出为:</p>
<pre><code> <html>
<body>
<div id="root">
<div id="child">
<div id="grandchild">
</div>
</div>
</div>
</body>
</html>
</code></pre>
<p>这意味着<code>root</code>现在是一个完整的HTML文档。<br/>
因此,如果您想使用<code>root</code>作为div,请确保使用<code>root.div</code>访问它</p>
</li>
<li><p>最后一行(<code>root.div.append</code>)清空<code>child</code>,因此如果在执行最后一行后打印它:</p>
<pre><code>[...]
print(child.prettify())
</code></pre>
<p>输出为:</p>
<pre><code><html>
<body>
</body>
</html>
</code></pre>
</li>
</ul>