- Requests в Python – примеры запросов
- Установка библиотеки requests на Python
- Python Requests и метод GET
- Объект Response — получаем ответ на запрос в Python
- HTTP-коды состояний
- Получаем содержимое страницы в Requests
- Заголовки HTTP в Requests
- Response Methods – Python requests
- Python3
- Response Methods
- Commonly Used Response Methods
- response.json()
- How to use response.json() using Python requests?
Requests в Python – примеры запросов
В языке программирования Python существует библиотека requests. Это стандартный инструмент, который используют для составления HTTP-запросов. Согласно документации, библиотека Requests позволяет:
• создавать запросы посредством наиболее популярных HTTP-методов; • редактировать заголовки запросов и данных с помощью строки запроса, а также содержимого сообщения; • анализировать данные запросов и откликов; • создавать авторизированные запросы; • настраивать запросы с целью предотвращения сбоев и замедлений в работе приложения.
Установка библиотеки requests на Python
Работа начинается с установки библиотеки requests. Для этого подойдёт следующая команда:
Если вы используете виртуальную среду Pipenv, команда будет немного другой:
Когда установка выполнена, вы можете переходить в среду разработки и полноценно использовать requests в приложении, предварительно выполнив импорт requests:
Итак, подготовительные действия выполнены, поэтому можно переходить к изучению requests. Начать лучше с запроса GET.
Python Requests и метод GET
Как вы, наверное, знаете, существуют HTTP-методы GET и POST. Они определяют, какие конкретно действия выполнятся при формировании HTTP-запроса. Есть и другие методы: POST, DELETE, HEAD, PUT, PATCH и OPTIONS. И для каждого из них определена своя сигнатура.
Самый популярный запрос — GET. Он указывает, что осуществляется попытка извлечь данные из какого-нибудь ресурса. Для выполнения этого запроса используют команду requests.get() .
Вот, например, как выглядит запрос GET в отношении Root REST API на GitHub:
requests.get(‘https://api.github.com’)
Объект Response — получаем ответ на запрос в Python
Response — мощный объект, предназначенный для анализа результатов запроса.
response = requests.get('https://api.github.com')В вышеописанном примере мы использовали get() для захвата определённого значения, являющегося частью объекта Response, с последующим помещением этого значения в переменную response. Теперь мы получили возможность использовать переменную response для изучения данных, полученных в результате отправки запроса GET.
HTTP-коды состояний
Первые данные, которые мы получим посредством Response, будут коды состояния. Они сообщают о статусе нашего запроса.
К примеру, статус 200 OK означает, что запрос был успешно выполнен. А известная всем ошибка 404 NOT FOUND скажет нам, что запрашиваемый ресурс найден не был. Таких статусных информационных кодов существует довольно много.
Давайте с помощью .status_code, увидим код состояния, возвращаемый с сервера.
В нашем случае .status_code вернул 200, что означает успешно выполненный запрос. Кстати, иногда полученная информация используется при написании кода:
if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.')Получаем содержимое страницы в Requests
Нередко ответ на GET-запрос включает в себя довольно ценную информацию. Эта информация находится в теле сообщения и её называют payload. Применяя атрибуты и методы библиотеки Response, мы сможем получить payload в разных форматах.
Если хотим получить содержимое запроса в байтах, нужно использовать .content.
>>> response = requests.get('https://api.github.com') >>> response.contentПрименение .content обеспечивает нам доступ к любым данным в теле запроса. Но нередко надо конвертировать полученные данные в строку с кодировкой UTF-8. Для этого выполняем команду response.text. По умолчанию requests пытается узнать текущую кодировку по заголовкам HTTP. Но мы можем указать нужную кодировку путём добавления перед .text .encoding.
>>> response.encoding = 'utf-8' # Optional: requests infers this internally >>> response.textЗаголовки HTTP в Requests
HTTP-заголовки ответов на запросы тоже могут дать нам полезную информацию. Например, тип содержимого ответного payload либо ограничения по времени для кэширования ответа. Чтобы посмотреть заголовок, надо заглянуть в атрибут .headers. Вот, как это может выглядеть:
Заголовок .headers возвращает словарь и предоставляет доступ к значению HTTP-заголовка по ключу. К примеру, чтобы посмотреть тип содержимого ответного payload, надо использовать Content-Type.
>>> response.headers['Content-Type'] 'application/json; charset=utf-8'Согласно специфике HTTP, заголовки являются нечувствительными к регистру. Таким образом, при получении доступа к заголовкам мы можем не беспокоиться о том, какие буквы использованы: строчные либо прописные.
Это лишь базовые знания по теме библиотеки Requests в Python и HTTP-заголовков. Если хотите знать больше, вам могут быть полезны следующие статьи: — «Requests в Python – Примеры выполнения HTTP-запросов»; — «Краткое руководство по библиотеке Python Requests».
Response Methods – Python requests
When one makes a request to a URI, it returns a response. This Response object in terms of python is returned by requests.method(), method being – get, post, put, etc. Response is a powerful object with lots of functions and attributes that assist in normalizing data or creating ideal portions of code. For example, response.status_code returns the status code from the headers itself, and one can check if the request was processed successfully or not.
Response object can be used to imply lots of features, methods, and functionalities.
Example :Python3
Save this file as request.py, and run using below command
Status code 200 indicates that request was made successfully.
Response Methods
Method | Description |
---|---|
response.headers | response.headers returns a dictionary of response headers. |
response.encoding | response.encoding returns the encoding used to decode response.content. |
response.elapsed | response.elapsed returns a timedelta object with the time elapsed from sending the request to the arrival of the response. |
response.close() | response.close() closes the connection to the server. |
response.content | response.content returns the content of the response, in bytes. |
response.cookies | response.cookies returns a CookieJar object with the cookies sent back from the server. |
response.history | response.history returns a list of response objects holding the history of request (url). |
response.is_permanent_redirect | response.is_permanent_redirect returns True if the response is the permanent redirected url, otherwise False. |
response.is_redirect | response.is_redirect returns True if the response was redirected, otherwise False. |
response.iter_content() | response.iter_content() iterates over the response.content. |
response.json() | response.json() returns a JSON object of the result (if the result was written in JSON format, if not it raises an error). |
response.url | response.url returns the URL of the response. |
response.text | response.text returns the content of the response, in unicode. |
response.status_code | response.status_code returns a number that indicates the status (200 is OK, 404 is Not Found). |
response.request | response.request returns the request object that requested this response. |
response.reason | response.reason returns a text corresponding to the status code. |
response.raise_for_status() | response.raise_for_status() returns an HTTPError object if an error has occurred during the process. |
response.ok | response.ok returns True if status_code is less than 200, otherwise False. |
response.links | response.links returns the header links. |
Commonly Used Response Methods
Some methods are most commonly used with response, such as response.json(), response.status_code, response.ok, etc. Requests is mostly used for making http request to APIs(Application Programming Interface). Some of commonly used response methods are discussed here –
response.json()
response.json() returns a JSON object of the result (if the result was written in JSON format, if not it raises an error).
How to use response.json() using Python requests?
To illustrate use of response.json(), let’s ping geeksforgeeks.org. To run this script, you need to have Python and requests installed on your PC.