0

私はこの単純なコードを使用しています

for l in bios:
    OpenThisLink = url + l
    response = urllib2.urlopen(OpenThisLink)

約200のURLを開き、正規表現(およびBeautifulSoup)で検索しますが、12ほど後にこれらのエラーが発生し、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

4

2 に答える 2

3

発生しているエラーは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))
于 2009-11-30T04:28:54.453 に答える
2

あなたが使用している特定のライブラリについては何も知りません。ただし、これは、最後の元のエラーにつながる 1 つの大きなスタック トレースのように見えます。

HTTPError: HTTP エラー 404: 見つかりません

リンクの 1 つに問題があり、キャッチされなかった例外が発生したと思います。

編集:「悪い」とは、サーバーがページを取得できなかったため、404エラーが発生したことを意味します。

于 2009-11-30T04:20:42.533 に答える