У меня возникли проблемы с анализом некоторого хитрого HTML с BeautifulSoup. Оказывается, что HTMLParser, используемый в более новых версиях, менее терпим, чем SGMLParser, используемый ранее.
Есть ли у BeautifulSoup какой-нибудь режим отладки? Я пытаюсь выяснить, как остановить это на некотором противном HTML, который я загружаю с веб-сайта Крэбби:
<HTML>
<HEAD>
<TITLE>Title</TITLE>
<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</HEAD>
<BODY>
...
...
</BODY>
</HTML>
BeautifulSoup сдается после тега <HTTP-EQUIV...>
In [1]: print BeautifulSoup(c).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Проблема явно в теге HTTP-EQUIV, который на самом деле является очень искаженным тегом <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
. Очевидно, мне нужно указать это как самозакрывающийся, но что бы я ни указывал, я не могу это исправить:
In [2]: print BeautifulSoup(c,selfClosingTags=['http-equiv',
'http-equiv="pragma"']).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Существует ли подробный режим отладки, в котором BeautifulSoup сообщит мне, что он делает, чтобы я мог выяснить, что он рассматривает в качестве имени тега в этом случае?