Question

J'utilise ce code simple

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

pour ouvrir environ 200 URL et les rechercher avec regex (et BeautifulSoup), mais après une douzaine environ, je reçois ces erreurs et IDLE se ferme. Que signifient-ils? Comment puis-je les gérer?

Merci.

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
  
    
      

    
  
Était-ce utile?

La solution

L'erreur générée est HTTPError . Plus précisément, un 404 est généré pour l'une de vos URL. Vous pouvez soit l'ignorer:

for l in bios:
    OpenThisLink = url + l
    try:
        response = urllib2.urlopen(OpenThisLink)
    except urllib2.HTTPError:
        pass

Vous pouvez également recréer l'erreur avec un message (légèrement) plus significatif:

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))

Autres conseils

Je ne sais rien des bibliothèques particulières que vous utilisez. Cependant, cela me semble être une grosse trace de pile conduisant à cette erreur originale à la toute fin:

  

HTTPError: Erreur HTTP 404: introuvable

Je pense que l'un des liens était mauvais et a déclenché une exception qui n'a pas été interceptée.

Modifier: Par "mauvais". Je veux dire que la page n'a pas pu être récupérée par le serveur, d'où l'erreur 404.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top