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


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

r = requests.get(url)

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

print r

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

<Response [404]>

EDIT:

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

1 65

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