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