У меня возникли проблемы с разбором некоторых хитрых 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 сообщит мне, что он делает, чтобы я мог понять, что в этом случае он обрабатывает как имя тега?