Python имеет широкий набор модулей, помогающих в веб-разработке. Одним из таких модулей является модуль requests
. Он используется для отправки запросов HTTP/1.1 с использованием Python. Модуль предоставляет различные функции, которые позволяют отправлять запросы, обрабатывать ответы и работать с ошибками. В этой статье мы рассмотрим модуль requests
и посмотрим, как его использовать в Python.
Предпосылки
Прежде чем погрузиться в модуль requests
, необходимо иметь общее представление о методах HTTP и кодах состояния. Знакомство со структурами данных Python и его синтаксисом также необходимо.
Установка модуля запросов
Модуль requests
можно легко установить с помощью pip
, системы управления пакетами для Python. Чтобы установить модуль, откройте терминал или командную строку и введите следующую команду:
pip install requests
Отправка запроса
Первым шагом в использовании модуля requests
является отправка запроса. Метод requests.get()
отправляет запрос GET на указанный URL-адрес и возвращает объект ответа. Объект ответа содержит ответ сервера на запрос.
import requests response = requests.get('https://www.example.com')
В приведенном выше коде мы импортируем модуль requests
и отправляем запрос GET на URL-адрес https://www.example.com
.
Обработка ответа
После отправки запроса мы получаем ответ от сервера. Объект ответа содержит различную информацию, такую как код состояния, заголовки и содержимое. Мы можем получить доступ к этой информации, используя различные атрибуты и методы объекта ответа.
import requests response = requests.get('https://www.example.com') print(response.status_code) print(response.headers) print(response.content)
В приведенном выше коде мы печатаем код состояния, заголовки и содержимое объекта ответа.
Передача параметров
Модуль requests
позволяет передавать параметры в URL с помощью параметра params
. Параметр params
должен быть словарем пар ключ-значение.
import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.get('https://www.example.com', params=payload)
В приведенном выше коде мы передаем параметры key1=value1
и key2=value2
в URL.
Добавление заголовков
Заголовки HTTP позволяют клиенту и серверу передавать дополнительную информацию с запросом или ответом. Модуль requests
позволяет добавлять заголовки к запросу с помощью параметра headers
. Параметр headers
должен быть словарем пар ключ-значение.
import requests headers = {'Content-type': 'application/json'} response = requests.get('https://www.example.com', headers=headers)
В приведенном выше коде мы добавляем заголовок Content-type
к запросу.
Отправка POST-запроса
Модуль requests
также позволяет отправлять POST-запрос на сервер. Метод requests.post()
отправляет запрос POST на указанный URL-адрес с указанными данными и возвращает объект ответа. Данные можно передавать в виде словаря, списка кортежей или в виде строки JSON.
import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.post('https://www.example.com', data=payload)
В приведенном выше коде мы отправляем запрос POST на URL-адрес https://www.example.com
с данными key1=value1
и key2=value2
.
Обработка ошибок
Модуль requests
также позволяет обрабатывать ошибки, которые могут возникнуть при отправке запроса. Метод raise_for_status()
вызывает исключение, если код состояния ответа указывает на ошибку HTTP. Мы также можем обрабатывать другие исключения, используя операторы try
и except
.
import requests response = requests.get('https://www.example.com') response.raise_for_status() try: response = requests.get('https://www.example.com') response.raise_for_status() except requests.exceptions.HTTPError as error: print(error) except requests.exceptions.RequestException as error: print(error)
В приведенном выше коде мы используем метод raise_for_status()
для создания исключения, если код состояния ответа указывает на ошибку HTTP. Мы также обрабатываем другие исключения, используя операторы try
и except
.
Сессии
Объект сеанса используется для сохранения параметров между запросами. Модуль requests
позволяет создать объект сеанса с помощью метода requests.Session()
. Объект сеанса позволяет устанавливать значения по умолчанию для таких параметров, как заголовки и файлы cookie.
import requests session = requests.Session() session.headers.update({'Content-type': 'application/json'}) response = session.get('https://www.example.com')
В приведенном выше коде мы создаем объект сеанса и устанавливаем заголовок Content-type
в качестве заголовка по умолчанию. Затем мы используем объект сеанса для отправки запроса GET на URL-адрес https://www.example.com
.
Аутентификация
Модуль requests
также позволяет отправлять запросы, требующие аутентификации. Параметр auth
можно использовать для указания учетных данных аутентификации. Классы HTTPBasicAuth
и HTTPDigestAuth
можно использовать для отправки запросов с базовой и дайджест-аутентификацией соответственно.
import requests response = requests.get('https://www.example.com', auth=('user', 'pass'))
В приведенном выше коде мы отправляем запрос GET на URL-адрес https://www.example.com
с учетными данными аутентификации user
и pass
.
SSL-подтверждение
Модуль requests
также позволяет проверять SSL-сертификаты. Параметр verify
можно использовать для включения или отключения проверки сертификата. Также можно указать путь к файлу пакета ЦС или каталогу, содержащему сертификаты ЦС.
import requests response = requests.get('https://www.example.com', verify=True)
В приведенном выше коде мы включаем проверку SSL-сертификата при отправке запроса GET на URL-адрес https://www.example.com
.
Тайм-аут
Модуль requests
позволяет установить тайм-аут для запроса. Параметр timeout
можно использовать для указания времени ожидания в секундах.
import requests response = requests.get('https://www.example.com', timeout=1)
В приведенном выше коде мы устанавливаем тайм-аут на 1 секунду при отправке запроса GET на URL-адрес https://www.example.com
.
Заключение
Модуль запросов — это мощный инструмент для выполнения HTTP-запросов в Python. Следуя примерам в этом руководстве, вы теперь должны хорошо понимать, как использовать модуль запросов для отправки запросов GET и POST и обработки ответов. Независимо от того, создаете ли вы веб-скрейпер или клиент REST API, модуль запросов является важным инструментом для любого разработчика Python.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.