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 .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.