このエラーを修正または例外にする方法
-
11-09-2019 - |
質問
任意の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
誰かがエラーを修正する方法または例外を作成する方法を説明してください
解決
そのエラーをキャッチするためには具体的には、このように見えるようにコードを変更します:
try:
iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))
except HTMLParseError:
#Do something intelligent here
ここでブロックを除いて、Pythonの試みのいくつかのより多くの読書です: http://docs.python.org/tutorial/errors.htmlする
他のヒント
最新バージョンの BeautifulSoup を使用していますか?
これは、バージョン 3.1.x の既知の問題のようです。バージョン 3.1.x では、不正な HTML の処理がはるかに悪い新しいパーサー (SGMLParser ではなく HTMLParser) の使用が開始されたためです。詳細については、次のサイトをご覧ください。 ビューティフルスープのウェブサイト.
簡単な解決策として、古いバージョンを使用するだけです (3.0.7a).
私はHTML文書での =&の文字列を持っていたとき、
私はエラーを得ました。私はその文字列を交換した場合(と私の場合の =との)その後、私はもはや受けた解析エラーます。
所属していません StackOverflow