Запросы - как сказать, если вы получаете 404
я использую библиотеку запросов и доступ к веб-сайту для сбора данных из него со следующим кодом:
r = requests.get(url)
Я хочу добавить тестирование ошибок, когда вводится неправильный URL-адрес и возвращается ошибка 404. Если я намеренно ввожу недопустимый URL-адрес, когда я делаю это:
print r
я получаю это:
<Response [404]>
EDIT:
Я хочу знать, как проверить, что. Тип объекта остается тем же самым. Когда я делаю r.content
или r.text
, Я просто получить HTML пользовательской страницы 404.
1 ответ:
посмотреть
r.status_code
атрибут:if r.status_code == 404: # A 404 was issued.
Demo:
>>> import requests >>> r = requests.get('http://httpbin.org/status/404') >>> r.status_code 404
если вы хотите
requests
чтобы вызвать исключение для кодов ошибок (4xx или 5xx), вызовитеr.raise_for_status()
:>>> r = requests.get('http://httpbin.org/status/404') >>> r.raise_for_status() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "requests/models.py", line 664, in raise_for_status raise http_error requests.exceptions.HTTPError: 404 Client Error: NOT FOUND >>> r = requests.get('http://httpbin.org/status/200') >>> r.raise_for_status() >>> # no exception raised.
вы также можете проверить объект ответа в логическом контексте; если код состояния не является кодом ошибки (4xx или 5xx), он является ‘истина’:
if r: # successful response
если вы хотите быть более явным, используйте
if r.ok:
.