Python requests get utf 8

Requests в Python – примеры запросов

В языке программирования Python существует библиотека requests. Это стандартный инструмент, который используют для составления HTTP-запросов. Согласно документации, библиотека Requests позволяет:

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

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

Работа начинается с установки библиотеки requests. Для этого подойдёт следующая команда:

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

Когда установка выполнена, вы можете переходить в среду разработки и полноценно использовать requests в приложении, предварительно выполнив импорт requests:

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

Python Requests и метод GET

Как вы, наверное, знаете, существуют HTTP-методы GET и POST. Они определяют, какие конкретно действия выполнятся при формировании HTTP-запроса. Есть и другие методы: POST, DELETE, HEAD, PUT, PATCH и OPTIONS. И для каждого из них определена своя сигнатура.

Самый популярный запрос — GET. Он указывает, что осуществляется попытка извлечь данные из какого-нибудь ресурса. Для выполнения этого запроса используют команду requests.get() .

Вот, например, как выглядит запрос GET в отношении Root REST API на GitHub:

requests.get(‘https://api.github.com’)

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

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

 
response = requests.get('https://api.github.com')

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

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

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

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

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

В нашем случае .status_code вернул 200, что означает успешно выполненный запрос. Кстати, иногда полученная информация используется при написании кода:

 
if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.')

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

Нередко ответ на GET-запрос включает в себя довольно ценную информацию. Эта информация находится в теле сообщения и её называют payload. Применяя атрибуты и методы библиотеки Response, мы сможем получить payload в разных форматах.

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

 
>>> response = requests.get('https://api.github.com') >>> response.content

Применение .content обеспечивает нам доступ к любым данным в теле запроса. Но нередко надо конвертировать полученные данные в строку с кодировкой UTF-8. Для этого выполняем команду response.text. По умолчанию requests пытается узнать текущую кодировку по заголовкам HTTP. Но мы можем указать нужную кодировку путём добавления перед .text .encoding.

 
>>> response.encoding = 'utf-8' # Optional: requests infers this internally >>> response.text

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

HTTP-заголовки ответов на запросы тоже могут дать нам полезную информацию. Например, тип содержимого ответного payload либо ограничения по времени для кэширования ответа. Чтобы посмотреть заголовок, надо заглянуть в атрибут .headers. Вот, как это может выглядеть:

Заголовок .headers возвращает словарь и предоставляет доступ к значению HTTP-заголовка по ключу. К примеру, чтобы посмотреть тип содержимого ответного payload, надо использовать Content-Type.

 
>>> response.headers['Content-Type'] 'application/json; charset=utf-8'

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

Python_Pro_970x550-20219-0846c7.png

Это лишь базовые знания по теме библиотеки Requests в Python и HTTP-заголовков. Если хотите знать больше, вам могут быть полезны следующие статьи: — «Requests в Python – Примеры выполнения HTTP-запросов»; — «Краткое руководство по библиотеке Python Requests».

Источник

Читайте также:  Insert query with primary key in php
Оцените статью