Что это за ошибки и как их исправить? - PullRequest
0 голосов
/ 30 ноября 2009

Я использую этот простой код

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

, чтобы открыть около 200 URL-адресов и найти их с помощью регулярных выражений (и BeautifulSoup), но примерно через дюжину я получаю эти ошибки и 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

Ответы [ 2 ]

3 голосов
/ 30 ноября 2009

Возникает ошибка HTTPError - в частности, 404 генерируется для одного из ваших URL. Вы можете проигнорировать это:

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))
2 голосов
/ 30 ноября 2009

Я ничего не знаю о конкретных библиотеках, которые вы используете. Тем не менее, это выглядит для меня как один большой след стека, который приводит к этой первоначальной ошибке в самом конце:

HTTPError: Ошибка HTTP 404: не найдено

Я думаю, что одна из ссылок была плохой, и это вызвало исключение, которое не было поймано.

Редактировать: Под "плохим" я подразумеваю, что страница не может быть получена сервером, поэтому ошибка 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...