Self request get python

Requests в Python – Примеры выполнения HTTP запросов

Requests Python

Библиотека requests является стандартным инструментом для составления HTTP-запросов в Python. Простой и аккуратный API значительно облегчает трудоемкий процесс создания запросов. Таким образом, можно сосредоточиться на взаимодействии со службами и использовании данных в приложении.

В данной статье представлены наиболее полезные особенности requests. Показано, как изменить и приспособить requests к различным ситуациям, с которыми программисты сталкиваются чаще всего. Здесь также даются советы по эффективному использованию requests и предотвращению влияния сторонних служб, которые могут сильно замедлить работу используемого приложения. Мы использовали библиотек requests в уроке по парсингу html через библиотеку BeautifulSoup.

Ключевые аспекты инструкции:

  • Создание запросов при помощи самых популярных HTTP методов;
  • Редактирование заголовков запросов и данных при помощи строки запроса и содержимого сообщения;
  • Анализ данных запросов и откликов;
  • Создание авторизированных запросов;
  • Настройка запросов для предотвращения сбоев и замедления работы приложения.

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

Далее будут показаны наиболее эффективные методы использования requests в разрабатываемом приложении.

Python установка библиотеки requests

Для начала работы потребуется установить библиотеку requests . Для этого используется следующая команда.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Тем, кто для работы с пакетами Python, использует виртуальную среду Pipenv, необходимо использовать немного другую команду.

Читайте также:  Caused by java lang arraystoreexception sun reflect annotation typenotpresentexceptionproxy

Сразу после установки requests можно полноценно использовать в приложении. Импорт requests производится следующим образом.

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

Python библиотека Requests метод GET

Такие HTTP методы, как GET и POST , определяют, какие действия будут выполнены при создании HTTP запроса. Помимо GET и POST для этой задачи могут быть использованы некоторые другие методы. Далее они также будут описаны в руководстве.

GET является одним из самых популярных HTTP методов. Метод GET указывает на то, что происходит попытка извлечь данные из определенного ресурса. Для того, чтобы выполнить запрос GET , используется requests.get() .

Для проверки работы команды будет выполнен запрос GET в отношении Root REST API на GitHub. Для указанного ниже URL вызывается метод get() .

Если никакие python ошибки не возникло, вас можно поздравить – первый запрос успешно выполнен. Далее будет рассмотрен ответ на данный запрос, который можно получить при помощи объекта Response.

Объект Response получение ответа на запрос в Python

Response представляет собой довольно мощный объект для анализа результатов запроса. В качестве примера будет использован предыдущий запрос, только на этот раз результат будет представлен в виде переменной. Таким образом, получится лучше изучить его атрибуты и особенности использования.

В данном примере при помощи get() захватывается определенное значение, что является частью объекта Response , и помещается в переменную под названием response . Теперь можно использовать переменную response для того, чтобы изучить данные, которые были получены в результате запроса GET .

HTTP коды состояний

Самыми первыми данными, которые будут получены через Response , будут коды состояния. Коды состояния сообщают о статусе запроса.

Например, статус 200 OK значит, что запрос успешно выполнен. А вот статус 404 NOT FOUND говорит о том, что запрашиваемый ресурс не был найден. Существует множество других статусных кодов, которые могут сообщить важную информацию, связанную с запросом.

Используя .status_code , можно увидеть код состояния, который возвращается с сервера.

.status_code вернул значение 200 . Это значит, что запрос был выполнен успешно, а сервер ответил, отобразив запрашиваемую информацию.

Читайте также:  Пример использования свойства CSS table-layout.

В некоторых случаях необходимо использовать полученную информацию для написания программного кода.

В таком случае, если с сервера будет получен код состояния 200 , тогда программа выведет значение Success! . Однако, если от сервера поступит код 404 , тогда программа выведет значение Not Found .
requests может значительно упростить весь процесс. Если использовать Response в условных конструкциях, то при получении кода состояния в промежутке от 200 до 400 , будет выведено значение True . В противном случае отобразится значение False .

Последний пример можно упростить при помощи использования оператора if .

Стоит иметь в виду, что данный способ не проверяет, имеет ли статусный код точное значение 200 . Причина заключается в том, что другие коды в промежутке от 200 до 400 , например, 204 NO CONTENT и 304 NOT MODIFIED , также считаются успешными в случае, если они могут предоставить действительный ответ.

К примеру, код состояния 204 говорит о том, что ответ успешно получен, однако в полученном объекте нет содержимого. Можно сказать, что для оптимально эффективного использования способа необходимо убедиться, что начальный запрос был успешно выполнен. Требуется изучить код состояния и в случае необходимости произвести необходимые поправки, которые будут зависеть от значения полученного кода.

Допустим, если при использовании оператора if вы не хотите проверять код состояния, можно расширить диапазон исключений для неудачных результатов запроса. Это можно сделать при помощи использования .raise_for_status() .

В случае вызова исключений через .raise_for_status() к некоторым кодам состояния применяется HTTPError . Когда код состояния показывает, что запрос успешно выполнен, программа продолжает работу без применения политики исключений.

На заметку. Для более продуктивной работы в Python 3.6 будет не лишним изучить f-строки. Не стоит пренебрегать ими, так как это отличный способ упростить форматирование строк.

Анализ способов использования кодов состояния, полученных с сервера, является неплохим стартом для изучения requests. Тем не менее, при создании запроса GET, значение кода состояния является не самой важной информацией, которую хочет получить программист. Обычно запрос производится для извлечения более содержательной информации. В дальнейшем будет показано, как добраться до актуальных данных, которые сервер высылает отправителю в ответ на запрос.

Читайте также:  Dashboard

Получить содержимое страницы в Requests

Зачастую ответ на запрос GET содержит весьма ценную информацию. Она находится в теле сообщения и называется пейлоад (payload). Используя атрибуты и методы библиотеки Response , можно получить пейлоад в различных форматах.

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

Использование .content обеспечивает доступ к чистым байтам ответного пейлоада, то есть к любым данным в теле запроса. Однако, зачастую требуется конвертировать полученную информацию в строку в кодировке UTF-8. response делает это при помощи .text .

Декодирование байтов в строку требует наличия определенной модели кодировки. По умолчанию requests попытается узнать текущую кодировку, ориентируясь по заголовкам HTTP. Указать необходимую кодировку можно при помощи добавления .encoding перед .text .

Если присмотреться к ответу, можно заметить, что его содержимое является сериализированным JSON контентом. Воспользовавшись словарем, можно взять полученные из .text строки str и провести с ними обратную сериализацию при помощи использования json.loads(). Есть и более простой способ, который требует применения .json() .

< 'current_user_url' : 'https://api.github.com/user' , 'current_user_authorizations_html_url' : 'https://github.com/settings/connections/applications‘ , ‘authorizations_url’ : ‘https://api.github.com/authorizations’ , ‘code_search_url’ : ‘https://api.github.com/search/code?q=‘ , ‘commit_search_url’ : ‘https://api.github.com/search/commits?q=‘ , ’emails_url’ : ‘https://api.github.com/user/emails’ , ’emojis_url’ : ‘https://api.github.com/emojis’ , ‘events_url’ : ‘https://api.github.com/events’ , ‘feeds_url’ : ‘https://api.github.com/feeds’ , ‘followers_url’ : ‘https://api.github.com/user/followers’ , ‘following_url’ : ‘https://api.github.com/user/following‘ , ‘gists_url’ : ‘https://api.github.com/gists‘ , ‘hub_url’ : ‘https://api.github.com/hub’ , ‘issue_search_url’ : ‘https://api.github.com/search/issues?q=‘ , ‘issues_url’ : ‘https://api.github.com/issues’ , ‘keys_url’ : ‘https://api.github.com/user/keys’ , ‘notifications_url’ : ‘https://api.github.com/notifications’ , ‘organization_repositories_url’ : ‘https://api.github.com/orgs//repos’ , ‘organization_url’ : ‘https://api.github.com/orgs/’ , ‘public_gists_url’ : ‘https://api.github.com/gists/public’ , ‘rate_limit_url’ : ‘https://api.github.com/rate_limit’ , ‘repository_url’ : ‘https://api.github.com/repos//‘ , ‘repository_search_url’ : ‘https://api.github.com/search/repositories?q=‘ , ‘current_user_repositories_url’ : ‘https://api.github.com/user/repos’ , ‘starred_url’ : ‘https://api.github.com/user/starred‘ , ‘starred_gists_url’ : ‘https://api.github.com/gists/starred’ , ‘team_url’ : ‘https://api.github.com/teams’ , ‘user_url’ : ‘https://api.github.com/users/’ , ‘user_organizations_url’ : ‘https://api.github.com/user/orgs’ , ‘user_repositories_url’ : ‘https://api.github.com/users//repos’ , ‘user_search_url’ : ‘https://api.github.com/search/users?q=‘ >

Тип полученного значения из .json() , является словарем. Это значит, что доступ к его содержимому можно получить по ключу.

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

HTTP заголовки в Requests

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

Источник

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