BeautifulSoup Python正在剥离我的HTML评论

时间:2014-09-05 09:30:40

标签: python beautifulsoup

我的问题是我想保留我的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变量中的优点。

1 个答案:

答案 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>

另见Output formatters documenation