Response 200 python что значит

Библиотека Requests: HTTP for Humans

Язык Python является универсальным языком программирования. С его помощью можно решать разнообразные задачи в сфере разработки.

Одной из таких сфер, в которой Python занял уверенную позицию, является веб-разработка. Немаловажную роль в этом сыграло обширное комьюнити, различные фреймворки и подключаемые библиотеки, созданные для облегчения жизни программистов. Об одной из таких библиотек сегодня пойдёт речь.

Библиотека Requests: HTTP for Humans

При решении различных задач в сфере веб-разработки, нам часто приходится взаимодействовать с HTTP. Это не самая простая задача для любого языка программирования и Python в этом не исключение. Язык, конечно, содержит встроенные модули, позволяющие отправлять HTTP запросы , но, как это ни парадоксально, их использование едва ли можно отнести к Pythonic-way.

В своё время чтобы обойти монструозность и сложность использования встроенных модулей появилась библиотека Requests . На данный момент она является одной из самых популярных библиотек на github: более 40 000 «звёзд» и используется более, чем в 20 000 open-source проектах. Нередко она используется и в коммерческой разработке.

Читайте также:  Отхаркивается желтая слизь что это значит

Для чего и где мы можем применять Requests?

Как было отмечено выше, библиотека позволяет нам легко и с минимальным количеством кода взаимодействовать с веб-приложениями. Это необходимо нам для решения любых задач, связанных с передачей информации от пользователя к серверу и обратно. Но, чтобы что-то хорошо понять, необходимо закрепить теоретические знания практикой, поэтому перейдём от слов к делу.

Примеры использования библиотеки Requests

Для работы с примерами мы будем использовать два способа: работа в командной строке и написание скриптов в .py-файлах для их дальнейшего запуска.

Я показываю использование командной строки, так как это полезный навык, который пригодится в дальнейшем, когда надо будет быстро что-то проверить.

Для начала, поскольку библиотека является внешней, нам необходимо её установить. Делается это очень просто в командной строке:

Продолжим использовать консоль. После установки в нашем расположении (у меня это диск D) введем команду:

Теперь можем проверить установку библиотеки произведя импорт:

Получаем ответ от сайта

Первое, что мы сделаем — проверим статус-код ресурса. Иными словами: узнаем, работает ли сайт. Для этого мы создадим простой запрос GET. Подробнее с кодами состояния HTTP можно ознакомиться на сайте Веб-документация MDN .

Проверим, что возвращает нам данный запрос:

Как мы можем видеть, в качестве ответа мы получили объект класса Response и код 200. Этот код говорит, что ресурс работает и можно с ним взаимодействовать.

А что будет, если мы отправим неправильный запрос?

Как вы можете заметить, этот запрос вернул нам всё тот же объект класса Response, но с другим кодом — 404. Это означает, что страницы ‘/user’ на сайте http://learn.python.ru нет.

Теперь, когда мы познакомились с тем, как отправлять запрос GET с помощью Requests, мы можем продвинуться дальше и сделать что-то более интересное.

Скачаем изображение с сайта

В этом примере мы будем применять всё тот же запрос GET, но, в отличие от предыдущего, мы будем работать с содержимым ответа.

После выполнения данного скрипта, мы увидим новое изображение под названием new_image.png в директории, из которой у нас запущен скрипт.

Подробнее с классом Response и методами получения его содержимого можно ознакомиться на официальном сайте библиотеки Requests .

Отправим сообщение в WhatsApp

В этом примере, в отличие от примеров выше, мы познакомимся с другим методом — POST. Стоит отметить, что запросы POST и GET являются самыми часто применяемыми при работе с HTTP.

Для реализации этого примера воспользуемся сервисом, предоставляющим API для отправки сообщений. Я буду использовать сервис Chat-Api . Это платный сервис, но у них есть демо-режим, предоставляющий бесплатный доступ на 3 дня, чего нам для реализации этой задачи будет достаточно. После регистрации на сайте и получении Api URL и токена, мы сможем выполнить отправку сообщений в WhatsApp. Вот что нам для этого потребуется:

И проверим, отправлено ли сообщение:

Вы должны будете увидеть что-то вроде этого:

Загрузим файл на сервер

Для следующего примера воспользуемся сайтом для тестирования HTTP запросов Webhook.site . В качестве URL мы будем использовать ссылку, которая генерируется на сайте автоматически. У вас она будет отличаться от использованной в примере.

После выполнения скрипта в терминале мы увидим уже знакомый нам объект класса Response и статус код — 200. Это означает, что запрос выполнился. Вернемся снова на сайт Webhook.site, выберем в правой колонке наш запрос и сможем посмотреть содержание выполненного запроса:

Авторизуемся на сайте

В этом примере будем использовать сайт, который нам также потребуется в следующем примере. Для начала зарегистрируемся на сайте WorldWeatherOnline . После удачной регистрации на сайте в личном кабинете вы увидите API KEY, который потребуется для следующего примера.

Для авторизации на сайте нам необходимо в запросе отправить пользовательские данные на сайт. Помимо логина и пароля, мы должны отправить сайту ключи, которые содержатся в заголовках пакета. Чтобы узнать эти ключи нужно выйти из нашей учётной записи, перейти на страницу входа, затем открыть в браузере Developer tools (F12), перейти на вкладку Network и снова авторизоваться. После того как страница загрузится в Developer tools во вкладке Network пролистайте вверх и найдите строчку login.aspx.

Как мы можем заметить во вкладке Headers, при входе мы осуществили запрос POST для передачи данных серверу. Пролистав вниз до блока Form Data, мы найдём все ключи, которые нам необходимо отправить сайту для авторизации.

Для проверки выполнения авторизации выведем содержание ответа сервера:

После выполнения данной функции в консоли мы увидим содержимое страницы в виде текста, то есть так, как страницу “видит” наш браузер — в формате html. Подтверждением успешной авторизации служат следующие строки:

Неавторизованному пользователю данные кнопки недоступны.

Узнаем погоду в Москве

В этом примере мы будем использовать API KEY с сайта WorldWeatherOnline, на котором мы зарегистрировались в прошлом примере. В разделе документации на сайте WorldWeatherOnline приведено подробное описание параметров.

Теперь уже с использованием вашей любимой IDE напишем скрипт, который будет принимать в качестве аргумента из командной строки город, а возвращать значение температуры.

Создадим файл и назовём его weather.py. Запишем в него:

Запустим наш скрипт в командной строке:

В качестве ответа мы должны увидеть:

В этом примере мы не просто получили какую-то информацию от сервера, но и обработали содержимое полученного ответа. В следующем примере мы разберем еще один метод обработки полученного содержимого ответа.

Напишем простой парсер новостей

В качестве источника новостей будем использовать хаб о Python сайта Habr.com . В этом примере, помимо Requests нам также понадобится библиотека BeautifulSoup. С данной библиотеке можно подробно познакомиться на официальной странице документации Beautiful Soup . Устанавливается она также просто, как и Requests:

Создадим файл с названием news.py и запишем в него следующее:

Метод get_html() класса HabrPythonNews с помощью библиотеки Requests отправляет наш запрос GET к сайту Habr.com и возвращает содержимое страницы в виде текста. Иными словами, мы получаем html страницы. Если мы посмотрим на содержимое страницы (ctrl + U в Google Chrome), то обнаружим там различные блоки, в которых содержится информация. Нас интересуют только заголовки новостей и ссылки на них. Чтобы извлечь нужную нам информацию из содержимого страницы, мы воспользуемся библиотекой Beautiful Soup. Нужный нам блок называется:

Давайте теперь добавим функцию для работы с этим блоком:

Метод get_python_news() возвращает нам все элементы страницы, с тегом

И добавим завершающий блок нашего класса:

Итоговый код должен выглядеть у нас так:

При выполнении данного скрипта мы получим ссылки и заголовки новостей с первой страницы хаба. Изменяя параметры поиска

мы можем получать различные значения.

В качестве заключения

Использование библиотеки Requests не ограничивается приведенными выше примерами. Данная библиотека является очень удобным инструментом для взаимодействия с HTTP. Продолжить знакомство с библиотекой можно на официальном сайте Requests .

Автор: Виталий Калинин

Учимся использовать API сервиса Yandex SpeechKit

Источник

Описание, атрибуты и методы объекта requests.Response.

Синтаксис:

Параметры:

Описание:

Объект requests.Response модуля requests содержит всю информацию ответа сервера на HTTP-запрос requests.get(), requests.post() и т.д.

Объект ответа сервера requests.Response генерируется после того, как библиотека requests получают ответ от сервера. Объект ответа Response содержит всю информацию, возвращаемую сервером, а также объект запроса, который создали изначально.

Атрибуты и методы объекта Response .

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

Response.apparent_encoding :

Атрибут Response.apparent_encoding возвращает кодировку, определенную сторонним модулем chardet .

Response.close() :

Метод Response.close() освобождает соединение с пулом. Как только этот метод был вызван, базовый необработанный объект больше не будет доступен.

Примечание: обычно не нужно вызывать явно.

Response.content :

Атрибут Response.content возвращает содержание ответа сервера, представленное в байтах.

Response.cookies = None :

Атрибут Response.cookies возвращает хранилище CookieJar файлов cookie, которые сервер отправил обратно.

Другими словами возвращает cookies , установленные сервером.

Response.elapsed = None :

Атрибут Response.elapsed возвращает время, прошедшее между отправкой запроса и получением ответа (в виде timedelta ).

Это свойство специально измеряет время, затраченное между отправкой первого байта запроса и завершением анализа заголовков. Поэтому на него не влияет потребление содержимого ответа или значения ключевого аргумента stream .

Response.encoding = None :

Атрибут Response.encoding возвращает/устанавливает кодировку для декодирования контента при доступе к атрибуту Response.text .

Response.headers = None :

Атрибут Response.headers возвращает словарь без учета регистра, с заголовками сервера, которые он вернул во время ответа.

Например, заголовки [‘content-encoding’] вернут значение заголовка ответа Content-Encoding .

Response.history = None :

Атрибут Response.history возвращает список объектов ответа сервера из истории запроса. Здесь окажутся все перенаправленные ответы.

Список сортируется от самого старого до самого последнего запроса.

Response.is_permanent_redirect :

Атрибут Response.is_permanent_redirect возвращает True , если в этом ответе одна из постоянных версий перенаправления.

Response.is_redirect :

Атрибут Response.is_redirect возвращает True если этот ответ является хорошо сформированным HTTP-перенаправлением, которое могло бы быть обработано автоматически ( Session.resolve_redirects ).

Response.iter_content(chunk_size=1, decode_unicode=False) :

Метод Response.iter_content() перебирает данные ответа. Когда в запросе установлен stream=True , то это позволяет избежать одновременного чтения содержимого в память для больших ответов.

Размер блока chunk_size — это количество байтов, которые он должен считывать в память. Это не обязательно длина каждого возвращаемого элемента, т.к. может иметь место декодирование.

Аргумент chunk_size должен иметь тип int или None . Значение None будет функционировать по-разному в зависимости от значения stream . Если stream=True , то будет считывать данные по мере их поступления в любом размере полученных фрагментов. Если stream=False , то данные возвращаются как один фрагмент.

Если аргумент decode_unicode=True , то содержимое будет декодировано с использованием наилучшей доступной кодировки на основе ответа.

Response.iter_lines(chunk_size=512, decode_unicode=False, delimiter=None) :

Метод Response.iter_lines() перебирает данные ответа, по одной строке за раз. Когда в запросе установлен stream=True , то это позволяет избежать одновременного чтения содержимого в память для больших ответов.

Обратите внимание, что этот метод не является безопасным для повторного входа.

Response.json(**kwargs) :

Метод Response.json() возвращает закодированное в json содержимое ответа, если таковое имеется.

Аргумент **kwargs это необязательные аргументы, которые принимает json.loads .

  • simplejson.JSONDecodeError — если тело ответа не содержит действительного json и установлен simplejson .
  • json.JSONDecodeError — если тело ответа не содержит допустимого json и simplejson не установлен.

Атрибут Response.links возвращает проанализированные ссылки заголовка ответа, если таковые имеются.

Response.next :

Атрибут Response.next возвращает объект подготовленного запроса PreparedRequest для следующего запроса в цепочке перенаправления, если таковой имеется.

Response.ok :

Атрибут Response.ok возвращает True , если status_code меньше 400, и False , если нет.

Этот атрибут проверяет, находится ли код состояния ответа в диапазоне от 400 до 600, чтобы проверить, была ли ошибка клиента или ошибка сервера. Если код состояния находится в диапазоне от 200 до 400, то этот атрибут вернет значение True .

Источник

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