2 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是一個(gè)相當(dāng)復(fù)雜的代碼,但這就是它可以完成的方法:
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)
注意:
如果你打印root:
[...]
print(root.prettify())
輸出是:
<html>
<body>
<div id="root">
<div id="child">
<div id="grandchild">
</div>
</div>
</div>
</body>
</html>
這意味著root現(xiàn)在是一個(gè)完整的 HTML 文檔。
因此,如果您想用作rootdiv,請(qǐng)確保使用root.div.
最后一行 ( root.div.append) 為空child,因此如果在執(zhí)行最后一行后打印它:
[...]
print(child.prettify())
輸出是:
<html>
<body>
</body>
</html>

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以將另一個(gè)附加soup到標(biāo)簽中。例如:
from bs4 import BeautifulSoup
html = """
<div id="root">
</div>
"""
to_append = '''
<div id="child">
<div id="grandchild">
</div>
</div>'''
soup = BeautifulSoup(html, 'html.parser')
soup.select_one('div#root').append(BeautifulSoup(to_append, 'html.parser'))
print(soup.prettify())
印刷:
<div id="root">
<div id="child">
<div id="grandchild">
</div>
</div>
</div>
添加回答
舉報(bào)