如何修复或对此错误做例外处理

1 投票
3 回答
4646 浏览
提问于 2025-04-15 12:46

我正在写一段代码,用来从任何网页获取图片的链接。这段代码是用Python写的,使用了BeautifulSoup和httplib2这两个库。
当我运行这段代码时,出现了以下错误:

Look me http://movies.nytimes.com          (this line is printed by the code)
Traceback (most recent call last):
File "main.py", line 103, in <module>
visit(initialList,profundidad)
File "main.py", line 98, in visit
visit(dodo[indice], bottom -1)
File "main.py", line 94, in visit
getImages(w)
File "main.py", line 34, in getImages
iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1499, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1230, in __init__
self._feed(isHTML=isHTML)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1263, in _feed
self.builder.feed(markup)
File "/usr/lib/python2.6/HTMLParser.py", line 108, in feed
self.goahead(0)
File "/usr/lib/python2.6/HTMLParser.py", line 148, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 226, in parse_starttag
endpos = self.check_for_whole_start_tag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 301, in check_for_whole_start_tag
self.error("malformed start tag")
File "/usr/lib/python2.6/HTMLParser.py", line 115, in error
raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: malformed start tag, at line 942, column 118

有人能告诉我怎么解决这个错误或者怎么处理这个错误吗?

3 个回答

0

我在我的HTML文档中遇到了一个错误,原因是里面有一个字符串=&。当我把这个字符串换成=and的时候,就不再出现那个解析错误了。

4

你在用最新版本的BeautifulSoup吗?
这个问题似乎是3.1.x版本的一个已知问题,因为它开始使用一种新的解析器(HTMLParser,而不是之前的SGMLParser),这个新解析器在处理有问题的HTML时效果很差。你可以在BeautifulSoup官网上找到更多信息。
作为一个快速解决办法,你可以直接使用一个旧版本(3.0.7a)。

2

要专门捕捉那个错误,你可以把你的代码改成这样:

try:
    iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))

except HTMLParseError:
    #Do something intelligent here

这里还有一些关于Python中try和except块的阅读资料: http://docs.python.org/tutorial/errors.html

撰写回答