为什么BeautifulSoup会抛出这个HTMLParseError?

Geo*_*Geo 1 python parsing exception beautifulsoup malformed

我认为BeautifulSoup将能够处理格式错误的文档,但是当我发送页面的源代码时,会打印下面的回溯:


Traceback (most recent call last):
  File "mx.py", line 7, in 
    s = BeautifulSoup(content)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1499, in __init__
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1230, in __init__
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1263, in _feed
  File "C:\Python26\lib\HTMLParser.py", line 108, in feed
    self.goahead(0)
  File "C:\Python26\lib\HTMLParser.py", line 150, in goahead
    k = self.parse_endtag(i)
  File "C:\Python26\lib\HTMLParser.py", line 314, in parse_endtag
    self.error("bad end tag: %r" % (rawdata[i:j],))
  File "C:\Python26\lib\HTMLParser.py", line 115, in error
    raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: bad end tag: u"", at line 258, column 34
Run Code Online (Sandbox Code Playgroud)

它应该不能处理这种东西吗?如果它可以处理它们,我怎么能这样做?如果没有,是否有一个可以处理格式错误的文件的模块?

编辑:这是一个更新.我使用firefox在本地保存了页面,我尝试从文件的内容创建一个汤对象.这就是BeautifulSoup失败的地方.如果我尝试直接从网站创建汤对象,它的工作原理.是导致汤麻烦的文件.

Tri*_*ych 5

使用BeautifulSoup 3.0.7版为我工作得很好.最新的是3.1.0,但是如果你遇到麻烦,可以在BeautifulSoup主页上注意尝试3.0.7a.我想我前段时间遇到了类似的问题并且还原了,这解决了问题; 我试试看.

如果你想坚持你当前的版本,我建议删除<script>顶部的大块,因为那是错误发生的地方,因为你无论如何都无法用BeautifulSoup解析那个部分.