我在使用BeautifulSoup解析一些狡猾的HTML时遇到了麻烦.事实证明,较新版本中使用的HTMLParser不如先前使用的SGMLParser容忍.
BeautifulSoup有某种调试模式吗?我正在试图弄清楚如何阻止它从一个令人讨厌的HTML borking我从一个crabby网站加载:
Title ... ...
BeautifulSoup在
标签后放弃
In [1]: print BeautifulSoup(c).prettify()Title
这个问题显然是HTTP-EQUIV标签,这实在是一个很畸形的标签.显然,我需要将其指定为自动关闭,但无论我指定什么,我都无法修复它:
In [2]: print BeautifulSoup(c,selfClosingTags=['http-equiv', 'http-equiv="pragma"']).prettify()Title
是否有一个详细的调试模式,BeautifulSoup将告诉我它在做什么,所以我可以弄清楚它在这种情况下作为标签名称处理什么?
有美丽的汤3.1.0的问题?建议使用html5lib的解析器作为解决方法之一.
#!/usr/bin/env python from html5lib import HTMLParser, treebuilders parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup")) c = """Title ... ... """ soup = parser.parse(c) print soup.prettify()
输出:
Title ... ...
输出显示html5lib在这种情况下没有解决问题.