Задать вопрос
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.

Как правильно отлавливать ошибки в urllib?

Python 3.

Как правильно отловить все ошибки в запросах?
Скрипт обращается к Yandex XML, оттуда получаем адрес сайта. Там нас ждёт всякое: таймаут, любые неподходящие статусы (403, например).

Делал вот так, где-то советовали, но всё равно получаю ошибку 403 и скрипт крашится из-за неё (не ловится).
try:
    response = urllib.request.urlopen(url, timeout=10)
except SocketError as e:
    if e.errno != errno.ECONNRESET:
        raise  # Not error we are looking for
    return False
except urllib.error.HTTPError:
    return False
except urllib.error.URLError:
    return False
except SocketError:
    return False

except socket.timeout:
    return False

except http.client.BadStatusLine:
    return False

except http.client.IncompleteRead:
    return False


P.S.: Также, может быть, посоветуете готовую библиотеку для Python 3 для нормального получения контента по url (в nodejs есть отличный request).
  • Вопрос задан
  • 1226 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
sim3x
@sim3x
docs.python-requests.org/en/master

Для того чтоб понять, что за класс ошибки у тебя срабатывает и продолжить исполнение
try:
    pass
except Exception as e:
    print(e)


однако прервать по ctrl+c также будет нельзя
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы