ฉันประสบปัญหาในการแยกวิเคราะห์ 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 จะบอกฉันว่ากำลังทำอะไรอยู่ เพื่อที่ฉันจะได้รู้ว่าในกรณีนี้จะถือเป็นชื่อแท็กอย่างไร