これらのエラーは何であり、どのように処理しますか?
-
10-07-2019 - |
質問
この単純なコードを使用しています
for l in bios:
OpenThisLink = url + l
response = urllib2.urlopen(OpenThisLink)
約200個のURLを開いて正規表現(およびBeautifulSoup)で検索しますが、1ダースほど後にこれらのエラーが発生し、IDLEが終了します。彼らはどういう意味ですか?どうすれば処理できますか?
ありがとう。
Traceback (most recent call last):
File "\PROJECTS\JD\jd10.py", line 15, in <module> response = urllib2.urlopen(OpenThisLink)
File "C:\Python26\lib\urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout)
File "C:\Python26\lib\urllib2.py", line 389, in open response = meth(req, response)
File "C:\Python26\lib\urllib2.py", line 502, in http_response 'http', request, response, code, msg, hdrs)
File "C:\Python26\lib\urllib2.py", line 421, in error result = self._call_chain(*args)
File "C:\Python26\lib\urllib2.py", line 361, in _call_chain result = func(*args)
File "C:\Python26\lib\urllib2.py", line 597, in http_error_302 return self.parent.open(new)
File "C:\Python26\lib\urllib2.py", line 389, in open response = meth(req, response)
File "C:\Python26\lib\urllib2.py", line 502, in http_response 'http', request, response, code, msg, hdrs)
File "C:\Python26\lib\urllib2.py", line 421, in error result = self._call_chain(*args)
File "C:\Python26\lib\urllib2.py", line 361, in _call_chain result = func(*args)
File "C:\Python26\lib\urllib2.py", line 597, in http_error_302 return self.parent.open(new)
File "C:\Python26\lib\urllib2.py", line 389, in open response = meth(req, response)
File "C:\Python26\lib\urllib2.py", line 502, in http_response 'http', request, response, code, msg, hdrs)
File "C:\Python26\lib\urllib2.py", line 427, in error return self._call_chain(*args)
File "C:\Python26\lib\urllib2.py", line 361, in _call_chain result = func(*args)
File "C:\Python26\lib\urllib2.py", line 510, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 404: Not Found
解決
発生するエラーは HTTPError
です。具体的には、URLの1つに対して404がスローされています。無視することもできます:
for l in bios:
OpenThisLink = url + l
try:
response = urllib2.urlopen(OpenThisLink)
except urllib2.HTTPError:
pass
または、(わずかに)より意味のあるメッセージでエラーを再発生させることもできます:
for l in bios:
OpenThisLink = url + l
try:
response = urllib2.urlopen(OpenThisLink)
except urllib2.HTTPError as e:
raise Exception('Error opening %s: %s' % (e.geturl(), e))
他のヒント
使用している特定のライブラリについては何も知りません。しかし、これは最後にこの元のエラーにつながる1つの大きなスタックトレースのように見えます:
HTTPError:HTTPエラー404:見つかりません
リンクの1つが不良で、キャッチされなかった例外がトリガーされたと思います。
編集:「不正」によってサーバーがページを取得できなかったため、404エラーが発生しました。
所属していません StackOverflow