Python requests статус ответа

Python Requests: Check Status Code and Description

“Requests” is a powerful and widely used library for making HTTP requests in Python. It provides a simple and easy-to-use interface for sending HTTP/1.1 requests and receiving responses from websites online. One of the most important features of the Python Requests library is the ability to check the status code and description of a response.

What is a Status Code?

  • 200 OK – The request was successful.
  • 400 Bad Request – The request was malformed or invalid.
  • 401 Unauthorized – The request requires authentication.
  • 403 Forbidden – The server refused to fulfill the request.
  • 404 Not Found – The requested resource could not be found.
  • 500 Internal Server Error – The server encountered an unexpected condition.

How to check Status Code and its description using Requests

The “. status_code ” attribute is used to check the status code of an HTTP response. It returns a three-digit integer that indicates the status of the response. To use this attribute, you simply call it on the response object.

import requests response = requests.get('https://www.example.com') print(response.status_code)

This code will send an HTTP GET request to “https://www.example.com” and print the status code of the response. This url is actually valid, that’s why it returns a “200” status code.

Читайте также:  Php оставить html теги

Check description of Status Code in Requests

While basic status codes like “200” and “404” are very well-known, we may get confused with some of the other uncommon ones. It’s useful to use something like the “ .reason ” property which is used to check the description of an HTTP response. It returns a string that gives more information about the status code.

import requests response = requests.get('https://www.example.com') print(response.status_code, response.reason)

Let’s try this on an invalid URL that does not exist.

import requests response = requests.get('https://www.example.com/does/not/exist') print(response.status_code, response.reason)

The above status code tells us that the URL (page) was not found (does not exist).

Let’s try this one more time. The below example tries to connect to “amazon.com”.

import requests response = requests.get('https://amazon.com') print(response.status_code, response.reason)

Why did this website return a 503 error? This is because we got blocked by amazon! Interested in knowing how to avoid this? Follow the link!

This marks the end of the “Python Requests: How to check Status Code and Description” Tutorial. Any suggestions or contributions for CodersLegacy are more than welcome. Questions regarding the tutorial content can be made in the comments section below.

Источник

Краткое руководство по библиотеке Python Requests

Прежде чем начать, убедитесь, что установлена последняя версия Requests.

Для начала, давайте рассмотрим простые примеры.

Создание GET и POST запроса

Импортируйте модуль Requests:

Попробуем получить веб-страницу с помощью get-запроса. В этом примере давайте рассмотрим общий тайм-лайн GitHub:

 
r = requests.get('https://api.github.com/events')

Мы получили объект Response с именем r . С помощью этого объекта можно получить всю необходимую информацию.

Простой API Requests означает, что все типы HTTP запросов очевидны. Ниже приведен пример того, как вы можете сделать POST запрос:

 
r = requests.post('https://httpbin.org/post', data = )

Другие типы HTTP запросов, такие как : PUT, DELETE, HEAD и OPTIONS так же очень легко выполнить:

 
 
r = requests.put('https://httpbin.org/put', data = ) r = requests.delete('https://httpbin.org/delete') r = requests.head('https://httpbin.org/get') r = requests.options('https://httpbin.org/get')

Передача параметров в URL

Часто вам может понадобится отправить какие-то данные в строке запроса URL. Если вы настраиваете URL вручную, эти данные будут представлены в нем в виде пар ключ/значение после знака вопроса. Например, httpbin.org/get?key=val . Requests позволяет передать эти аргументы в качестве словаря, используя аргумент params . Если вы хотите передать key1=value1 и key2=value2 ресурсу httpbin.org/get , вы должны использовать следующий код:

 
 
payload = r = requests.get('https://httpbin.org/get', params=payload) print(r.url)

Как видно, URL был сформирован правильно:

https://httpbin.org/get?key2=value2&key1=value1

Ключ словаря, значение которого None , не будет добавлен в строке запроса URL.

Вы можете передать список параметров в качестве значения:

 
 
>>> payload = >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3

Содержимое ответа (response)

Мы можем прочитать содержимое ответа сервера. Рассмотрим снова тайм-лайн GitHub:

 
 
>>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[

Requests будет автоматически декодировать содержимое ответа сервера. Большинство кодировок unicode декодируются без проблем.
Когда вы делаете запрос, Requests делает предположение о кодировке, основанное на заголовках HTTP. Эта же кодировка текста, используется при обращение к r.text . Можно узнать, какую кодировку использует Requests, и изменить её с помощью r.encoding :

 
>>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'

Если вы измените кодировку, Requests будет использовать новое значение r.encoding всякий раз, когда вы будете использовать r.text . Вы можете сделать это в любой ситуации, где нужна более специализированная логика работы с кодировкой содержимого ответа.

Например, в HTML и XML есть возможность задавать кодировку прямо в теле документа. В подобных ситуациях вы должны использовать r.content , чтобы найти кодировку, а затем установить r.encoding . Это позволит вам использовать r.text с правильной кодировкой.

Requests может также использовать пользовательские кодировки в случае, если в них есть потребность. Если вы создали свою собственную кодировку и зарегистрировали ее в модуле codecs, используйте имя кодека в качестве значения r.encoding .

Бинарное содержимое ответа

Вы можете также получить доступ к телу ответа в виде байтов для не текстовых ответов:

Передача со сжатием gzip и deflate автоматически декодируются для вас.

Например, чтобы создать изображение на основе бинарных данных, возвращаемых при ответе на запрос, используйте следующий код:

 
 
from PIL import Image from io import BytesIO i = Image.open(BytesIO(r.content))

Содержимое ответа в JSON

Если вы работаете с данными в формате JSON, воспользуйтесь встроенным JSON декодером:

>>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.json() [

Если декодирование в JSON не удалось, r.json() вернет исключение. Например, если ответ с кодом 204 (No Content), или на случай если ответ содержит не валидный JSON, попытка обращения к r.json() будет возвращать ValueError: No JSON object could be decoded .

Следует отметить, что успешный вызов r.json() не указывает на успешный ответ сервера. Некоторые серверы могут возвращать объект JSON при неудачном ответе (например, сведения об ошибке HTTP 500). Такой JSON будет декодирован и возвращен. Для того, чтобы проверить успешен ли запрос, используйте r.raise_for_status() или проверьте какой r.status_code .

Необработанное содержимое ответа

В тех редких случаях, когда вы хотите получить доступ к “сырому” ответу сервера на уровне сокета, обратитесь к r.raw . Если вы хотите сделать это, убедитесь, что вы указали stream=True в вашем первом запросе. После этого вы уже можете проделать следующее:

Источник

Оцените статью