В версиях BeautifulSoup до 3 я мог легко взять любой фрагмент 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, а также искал внутри класса, но не смог найти никаких параметров для подавления дополнительных тегов в результатах. Как мне это сделать? Переход на v3 не является опцией, поскольку синтаксический анализатор SGML, используемый в BS3, не так хорош, как парсеры lxml
или html5lib
, доступные с BS4.