私はBeautifulSoupでいくつかの危険なHTMLを解析するのに苦労していました。新しいバージョンで使用されているHTMLParserは、以前に使用されていたSGMLParserよりも耐性が低いことがわかりました。
BeautifulSoupにはある種のデバッグモードがありますか?ぼろぼろのWebサイトからロードしている厄介な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が何をしているのかを教えてくれる詳細なデバッグモードはありますか?この場合、タグ名として何を扱っているのかを理解できますか?