1

任意の Web ページから画像の URL を取得するコードを作成しています。コードは Python であり、BeutifulSoup と 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

誰かがエラーの修正または例外の作成方法を説明してくれます

4

3 に答える 3

4

BeautifulSoupの最新バージョンを使用していますか?
これはバージョン3.1.xの既知の問題のようです。これは、不正な形式のHTMLの処理がはるかに悪い新しいパーサー(SGMLParserではなくHTMLParser)の使用を開始したためです。これについての詳細は、BeautifulSoupのWebサイトで見つけることができます。簡単な解決策として、古いバージョン( 3.0.7a
) を使用するだけです。

于 2009-07-08T20:46:06.153 に答える
2

そのエラーを具体的にキャッチするには、コードを次のように変更します。

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

except HTMLParseError:
    #Do something intelligent here

ブロックを除くPythonの試みについてさらに詳しく説明します:http: //docs.python.org/tutorial/errors.html

于 2009-07-08T19:20:53.143 に答える
0

HTMLドキュメントに文字列==があると、このエラーが発生しました。その文字列を(私の場合は= andに)置き換えたところ、その解析エラーは発生しなくなりました。

于 2009-12-03T22:34:07.397 に答える