-1
>>> 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>

如您所见,htmlstr(soup).. 之间有区别

< became &lt;
> became &gt;

为什么会这样??

4

2 回答 2

6

您的 HTML 无效,BeautifulSoup 已尽力修复该问题。

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

于 2013-03-08T10:27:00.703 回答
2

元素的结束标签<p>有错误的斜线。由于这是汤而不是 XML,bs4 接受这一点,但如果您打印它,则可以正确地转义它。

于 2013-03-08T10:27:33.453 回答