Введение в работу с библиотекой Requests в Python

    Команда Simple-Server
    03.06.2026
    9 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Как установить библиотеку Requests в Python

    В рамках всего материала речь будет идти про работу в IDE Pycharm.

    Библиотека Requests в Python является сторонней, поэтому перед началом работы её необходимо установить. Создаем проект и открываем терминал. В**** Python установка библиотеки Requests**** осуществляется следующей командой:

    Если вы используете виртуальную среду Pipenv, то установка библиотеки Requests в Python 3 производится другой командой:

    После исполнения этих команд начнется загрузка модуля. С помощью команды pip freeze можем узнать, какие модули были установлены:

    PS C:\Users\Simple-Server\PycharmProjects\RequestTimeweb> pip3 freeze certifi==2022.9.24 charset-normalizer==2.1.1 idna==3.4 requests==2.28.1 urllib3==1.26.12

    Расскажем, какие функции выполняют эти модули:

    • certifi — пакет сертификатов для обеспечения безопасного соединения;
    • charset-normalizer — библиотека, которая автоматически распознает тексты неизвестной кодировки. Полезный модуль, поскольку не все сайты и сервисы работают на распространенной UTF-8;
    • idna — библиотека для поддержки интернационализированных доменных имен в приложениях;
    • requests — собственно, сам модуль requests;
    • urllib3 — модуль, включающий в себя функции и классы для работы с URL-адресами;

    В этой части статьи мы напишем код для получения информации с ресурсов и узнаем основные составляющие библиотеки Requests. В дальнейшем мы более детально разберем все аспекты.

    Работа с библиотекой Requests в Python начинается с импорта:

    Обратимся к сайту google.com:

    import requests as rq response = rq.get('https://google.com') print(response)

    Здесь мы используем HTTP-запрос GET. Его работа аналогична переходу на сайт по URL в браузере. Далее мы подробнее разберем его.

    В ответ мы получили объект Response. У него огромное количество различных свойств, которые мы также разберем дальше. При выводе этого объекта мы получаем код 200 — он означает, что запрос выполнен успешно. Если мы обратимся к несуществующему разделу на сайте google.com, то получим ответ об его отсутствии:

    import requests as rq response = rq.get('https://google.com/Simple-Server') print(response)

    Теперь разберем, какие вообще существуют запросы и как с ними работать.

    Основным запросом к сервисам и сайтам является GET. Он позволяет просматривать содержимое ресурса без его изменения. Однако для полноценной работы с ресурсами в сети может понадобится ряд других запросов. Некоторые из них могут не поддерживаться со стороны того или иного сервера. Вот 7 запросов, которые поддерживает библиотека Requests:

    • GET
    • POST
    • OPTIONS
    • HEAD
    • PUT
    • PATCH
    • DELETE

    Для тестирования библиотеки создатели спроектировали сайт https://httpbin.org, с помощью которого вы можете попрактиковаться.

    GET передает информацию сайту прямо в заголовке. Поэтому его стоит использовать в случаях, когда передаваемая информация не является чем-то ценным: например, поиск некоторой страницы в интернет-магазине. Его не стоит использовать для передачи паролей, банковский карт и подобных данных.

    Для передачи данных серверу к его URL-адресу добавляется знак ?, затем идут сами данные. Выглядит это следующим образом:

    https://serverurl.ru/get?param1=value1&param2=value2
    • https://serverurl.ru/get — это URL;
    • param1=value1&param2=value2 — параметры. Если параметров несколько, то они отделяются амперсандом "&".

    В Requests GET имеет следующий синтаксис:

    requests.get( 'URL-адрес', {key: value}, различные аргументы)
    • URL-адрес — адрес ресурса;
    • {key: value} — параметры. Метод самостоятельно включит их в запрос. Необязательный аргумент метода;
    • Различные аргументы — необязательные аргументы. Например, время таймаута.

    Опробуем его на практике:

    import requests as rq GetParams = {'param1': 'value1', 'param2': 'value2'} response = rq.get('https://google.com', GetParams) print(response.url) https://www.google.com/?param1=value1&param2=value2

    POST используется для отправки данных на сайт в теле запроса. Тело запроса — это данные, передающиеся при совершении запроса к ресурсу. Эта информация не размещается в заголовке и подходят для передачи конфиденциальных данных.

    В Requests POST имеет следующий синтаксис:

    requests.post('URL-адрес', {key: value}, различные аргументы}
    • URL-адрес — адрес ресурса;
    • {key: value} — параметры. Метод самостоятельно включит их в тело запроса. Необязательный аргумент метода;
    • Различные аргументы — необязательные аргументы. Например, время таймаута.

    Если не указать параметры, то GET и POST запросы вернут одинаковый результат для одного URL. Посмотрим, как работает это на практике:

    import requests as rq PostParams = {'param1': 'value1', 'param2': 'value2'} response = rq.post('https://httpbin.org/post', PostParams, timeout=2) print(response.json()['form']) {'param1': 'value1', 'param2': 'value2'}

    С помощью метода json() мы получили тело запроса из response. К слову, если бы мы совершили аналогичный запрос к google.com, то получили бы ошибку:

    import requests as rq PostParams = {'param1': 'value1', 'param2': 'value2'} response = rq.post('https://google.com', PostParams, timeout=2) print(response)

    Ошибка 405 (Method Not Allowed) означает, что ресурс не поддерживает такой запрос.

    Для того, чтобы узнать какие запросы поддерживает ресурс необходимо использовать OPTIONS.

    С помощью OPTIONS мы можем узнать, какие запросы не будут заблокированы ресурсом.

    requests.option('URL-адрес', необязательные аргументы)

    Отправим OPTIONS-запрос к google.com и узнаем, какие запросы он поддерживает:

    import requests as rq response = rq.options('https://google.com', timeout=2) print(response.headers['Allow'])

    В ответ на HEAD сервер вернет HTTP заголовки. Этот запрос выполняется, когда нужно получить не содержимое файла, а другие данные. Также HEAD может выполнять тестовые функции.

    requests.head('URL-адрес', различные аргументы)
    • URL-адрес — адрес ресурса;
    • Различные аргументы — необязательные аргументы. Например, время таймаута.

    Применим его к google.com:

    import requests as rq response = rq.head('https://google.com', timeout=2) print(response.headers)

    В выводе мы получили большое количество заголовков.

    PUT создает новый объект или заменяет существующий. Он похож на метод POST, но отличается идемпотентностью. Это означает, что при повторных выполнениях PUT с аналогичными данными результат не изменится.

    Для лучшего понимания представим базу данных с паролями и логинами. Допустим пользователь хочет поменять пароль. При использовании метода POST он добавит новую запись со своим идентификатором, в данном случае логином (при отсутствии других программных проверок). При использовании PUT он обновит текущий.

    requests.put('URL-адрес', {key: value}, различные аргументы)
    • URL-адрес — адрес ресурса;
    • {key: value} — параметры. Метод самостоятельно включит их в тело запроса.
    • Различные аргументы — необязательные аргументы. Например, время таймаута.
    import requests as rq PutParams = {'param1': 'value2', 'param2': 'value2'} response = rq.put('https://httpbin.org/put', data=PutParams, timeout=2) print(response.status_code)

    С помощью PATCH осуществляется частичное обновление данных на ресурсе (например, смена токена). Синтаксис следующий:

    requests.patch ('URL-адрес', {key: value}, различные аргументы)
    • URL-адрес — адрес ресурса;
    • {key: value} — параметры. Метод самостоятельно включит их в тело запроса.
    • Различные аргументы — необязательные аргументы. Например, время таймаута.
    import requests as rq PatchParams = {'param1': 'value2', 'param2': 'value2'} response = rq.patch('https://httpbin.org/patch', data=PatchParams, timeout=2) print(response.status_code)

    Используется для удаления некого объекта на ресурсе. Синтаксис:

    requests.delete('URL-адрес', {key: value})
    • URL-адрес — адрес ресурса;
    • {key: value} — параметры (данные, которые необходимо удалить). Метод самостоятельно включит их в тело запроса.
    import requests as rq DelParams = {'param1': 'value2', 'param2': 'value2'} response = rq.delete('https://httpbin.org/delete', data=DelParams, timeout=2) print(response.status_code)

    Как было показано в примерах, объект Response обладает большим количеством методов и свойств. Ниже вы найдете их с кратким описанием:

    • apparent_encoding — кодировка, распознанная charset-normalizer;
    • close() — закрывает соединение с сервером;
    • content — вывод полученных данных в байтах;
    • cookies — вывод куки;
    • elapsed — вывод времени;
    • encoding — выбор кодировки для декодирования;
    • headers — вывод заголовков ресурса;
    • history — вывод переадресации;
    • is_permanent_redirect — определение постоянных редиректов;
    • is_redirect — определение наличия редиректа;
    • iter_content() — возврат данных по частям;
    • iter_lines() — возврат данных построчно;
    • json() — возврат данных в формате JSON;
    • links — возврат ссылок в заголовках ответа;
    • next — возврат PreparedRequest;
    • ok — True при удачном соединении, False при неудачном;
    • raise_for_status() — вызов исключения HTTPError;
    • reason — вывод текстового представления объекта;
    • request — возврат результат PreparedRequest;
    • status_code — код ответа;
    • text — вывод ответа в юникоде;
    • url — вывод URL.

    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны