Saya kesulitan mengurai beberapa HTML yang cerdik dengan BeautifulSoup. Ternyata HTMLParser yang digunakan di versi yang lebih baru kurang toleran dibandingkan SGMLParser yang digunakan sebelumnya.
Apakah BeautifulSoup memiliki semacam mode debug? Saya mencoba mencari cara untuk menghentikannya membosankan pada beberapa HTML jahat yang saya muat dari situs web pemarah:
<HTML>
<HEAD>
<TITLE>Title</TITLE>
<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</HEAD>
<BODY>
...
...
</BODY>
</HTML>
BeautifulSoup menyerah setelah tag <HTTP-EQUIV...>
In [1]: print BeautifulSoup(c).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Masalahnya jelas pada tag HTTP-EQUIV, yang sebenarnya merupakan tag <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
yang sangat salah. Jelas, saya perlu menetapkan ini sebagai penutupan sendiri, tetapi apa pun yang saya tentukan, saya tidak dapat memperbaikinya:
In [2]: print BeautifulSoup(c,selfClosingTags=['http-equiv',
'http-equiv="pragma"']).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Apakah ada mode debug verbose di mana BeautifulSoup akan memberi tahu saya apa yang dilakukannya, sehingga saya dapat mengetahui apa yang diperlakukan sebagai nama tag dalam kasus ini?