BeautifulSoup - str(汤)与给出的html不同

pra*_*nsg -1 html python string beautifulsoup

>>> from bs4 import BeautifulSoup as bs
>>> html = """<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b><\p>
<p><b>para2</b><\p>
</body>
</html>"""
>>> 
>>> soup = bs(html)
>>> html == str(soup)
False
>>> print html
<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b><\p>
<p><b>para2</b><\p>
</body>
</html>
>>> print soup
<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b>&lt;\p&gt;
<p><b>para2</b>&lt;\p&gt;
</p></p></body>
</html>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,htmlstr(soup)... 之间存在差异.

< became &lt;
> became &gt;
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Mar*_*ers 6

你有无效的HTML,BeautifulSoup试图尽可能地解决这个问题.

请注意,<\p>标记是转义的,因为它们不是有效的HTML结束标记.相反,</p>添加了适当的标签.