我的问题是我想保留我的HTML评论,但它们会被删除。
content = """
<html>
<head>
<title>Foo</title>
<!-- testcomment -->
</head>
<body>
<div id="mycontent">Here's my content</div>
<!-- testcomment2 -->
</body>
</html>"""
soup = BeautifulSoup(content, builder=HTMLParserTreeBuilder())
print soup.body.contents
返回
[u'\n', <div id="mycontent">Here's my content</div>, u'\n', u' testcomment2 ', u'\n']
我可以传递一面旗帜让我的评论完好无损吗?
修改
预期的输出是content
变量中的优点。
答案 0 :(得分:1)
评论在那里,但他们的__repr__
表示不包含<!--
和-->
前缀和后缀。
您可以调用Comment.output_ready()
方法来包含这些:
>>> soup.body.contents[3].output_ready()
u'<!-- testcomment2 -->'
或将父级转换为unicode,或调用.prettify()
方法:
>>> unicode(soup.body)
u'<body>\n<div id="mycontent">Here\'s my content</div>\n<!-- testcomment2 -->\n</body>'
>>> print(unicode(soup.body))
<body>
<div id="mycontent">Here's my content</div>
<!-- testcomment2 -->
</body>
>>> print(soup.body.prettify())
<body>
<div id="mycontent">
Here's my content
</div>
<!-- testcomment2 -->
</body>