Запросы - как узнать, получаете ли вы 404 - программирование
Подтвердить что ты не робот

Запросы - как узнать, получаете ли вы 404

Я использую библиотеку Requests и получаю доступ к веб-сайту для сбора данных из него с помощью следующего кода:

r = requests.get(url)

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

print r

Я получаю это:

<Response [404]>

EDIT:

Я хочу знать, как проверить это. Тип объекта все тот же. Когда я делаю r.content или r.text, я просто получаю HTML-код пользовательской страницы 404.

4b9b3361

Ответ 1

Посмотрите на атрибут r.status_code:

if r.status_code == 404:
    # A 404 was issued.

Демо:

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