-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 に答える