3 より前の BeautifulSoup バージョンでは、HTML の任意のチャンクを取得して、次の方法で文字列表現を取得できました。
from BeautifulSoup import BeautifulSoup
soup3 = BeautifulSoup('<div><b>soup 3</b></div>')
print unicode(soup3)
'<div><b>soup</b></div>'
ただし、BeautifulSoup4 では、同じ操作で追加のタグが作成されます。
from bs4 import BeautifulSoup
soup4 = BeautifulSoup('<div><b>soup 4</b></div>')
print unicode(soup4)
'<html><body><div><b>soup 4</b></div></body></html>'
^^^^^^^^^^^^ ^^^^^^^^^^^^^^
<html><body>..</body></html>
BS4 が追加している外部タグは必要ありません。BS4 ドキュメントを調べ、クラス内も検索しましたが、出力で余分なタグを抑制する設定が見つかりませんでした。どうすればいいのですか?BS3 で使用されている SGML パーサーは、BS4 で使用可能なlxml
またはパーサーほど優れていないため、v3 へのダウングレードはオプションではありません。html5lib