Как передать параметры в get запросе python

Библиотека Requests Python 3: GET-запросы

В этой статье мы рассмотрим библиотеку Python Requests, которая позволяет отправлять HTTP-запросы в Python.

Работа API основана на отправке HTTP-запросов и получение ответов. Библиотека Requests позволяет использовать API в Python. В качестве примера я продемонстрирую принцип работы Translate API.

Краткий обзор HTTP-запросов

Каждый раз, когда вы переходите на веб-страницу, браузер отправляет несколько запросов на сервер. В ответ он отсылает данные для рендеринга страницы, которые браузер использует для ее отображения.

Механизмы работает следующим образом: клиент (например, браузер или скрипт Python, использующий библиотеку Requests) отправляет данные на сервер, расположенный по указанному URL. Сервер обрабатывает полученную информацию и возвращает ответ клиенту.

В запросе клиент также указывает, какой метод будет использован для передачи. Самые распространенные методы: GET, POST и PUT.

GET-запросы предназначены только для чтения данных без внесения каких-либо изменений. POST и PUT-запросы предназначены для изменения данных на сервере. Так, например, Stripe API применяет POST-запросы для создания новых платежей, чтобы пользователь мог что-то купить в вашем приложении.

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

Requests Python 3 — установка

Прежде всего, установим библиотеку Python Requests, используя менеджер пакетов pip. Сначала создайте виртуальную среду.

Наш первый запрос

Для начала используем библиотеку Python Requests для чего-то простого: отправим запрос на сайт Scotch.io. Создайте файл script.py и добавьте в него приведенный ниже код.

Приведенный выше код отправляет запрос GET на Scotch.io. Это тот же тип запроса, который браузер отправляет для просмотра веб-страницы. Отличие заключается в том, что эти запросы не могут передать HTML. Поэтому вместо него приходит необработанный HTML и другая информация из ответа, предоставленного сервером.

Запустите файл script.py.

В ответ придет следующее:

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Коды состояния

Проверим код состояния ответа. Коды состояния HTTP варьируются от 1XX до 5XX. Скорее всего, вы сталкивались с кодами состояния 200, 404 и 500.

Что обозначает каждый из них:

Обычно при выполнении запросов приходят коды состояния 2ХХ. Коды 4XX и 5XX являются ошибками. При их получении ответ расценивается как False.

Вы можете проверить результативность запроса с помощью следующего кода:

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Чтобы увидеть ответ с ошибкой 404, измените URL-адрес на произвольные знаки. Можно проверить код состояния, выполнив:

Также можно проверить код состояния самостоятельно.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Заголовки

Кроме этого ответ сервера содержит заголовки. На них можно взглянуть, используя словарь HTTP-заголовков.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

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

Важно знать тип содержимого ответа сервера, поскольку оно указывает на формат отправляемых данных. Например, HTML, JSON, PDF, text и т. д. Но тип содержимого обычно обрабатывается библиотекой Requests. Это обеспечивает простой доступ к полученным данным.

Response Text

Свойство res.text позволяет получить весь HTML-код, необходимый для создания домашней страницы Scotch. Если сохранить этот HTML как веб-страницу и открыть ее, то мы увидим нечто похожее на сайт Scotch.

Чтобы загрузить изображения, скрипты и таблицы стилей совершается множество запросов к одной веб-странице. Поэтому, если сохранить в файле только HTML-код, он не будет выглядеть так, как страница Scotch.io, открытая в браузере.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Используем Translate API

Мы будем использовать Yandex Translate API. После регистрации перейдите в Translate API и создайте ключ API. Получив ключ API, добавьте его в свой файл. Вот ссылка на сайт, где это можно сделать: https://yandex.ru/dev/translate/

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Ключ API нужен, чтобы Яндекс мог аутентифицировать нас. Ключ API добавляется в конец URL-адреса запроса при отправке.

Чтобы узнать, какой URL-адрес нам нужно отправить для использования API, обратимся к документации Яндекса:

Здесь доступна вся информация по использованию Translate API для перевода текста.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Если в документации указан URL с амперсандами (&), вопросительными знаками (?) и знаками равенства (=), значит он предназначен для отправки GET- запросов

Параметры, размещенные в квадратных скобках ([]), не является обязательными. В данном случае format, options и callback являются необязательными. Но key, text и lang обязательны для запроса.

Добавим код для отправки на этот URL. Можно заменить созданный нами запрос следующим образом:

Параметры можно добавить в конец URL-адреса. Но библиотека Requests может сделать это за нас. Причем второй вариант гораздо проще.

Для его реализации создадим словарь для параметров. Понадобятся только key, text и language. Создадим словарь, используя следующие значения: API key, «Hello» для текста и «en-es» для lang (для перевода с английского на испанский).

Передадим функции dict() нужные ключи и значения:

После этого библиотека Requests добавит параметры к URL-адресу. Теперь используем оператор print для response text и посмотрим, что вернется в ответе.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Мы получили code (код состояния), совпадающий с кодом состояния ответа. А также language (язык), который мы указали, и перевод. Поэтому вы должны увидеть переведенный текст «Hola».

Попробуйте еще раз со значением кода языка en-fr и получите «Bonjour».

Источник

Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

В этом уроке по API Python мы узнаем, как получать данные для проектов по науке о данных. В Интернете существуют миллионы API, которые предоставляют доступ к данным. Такие сайты, как Bitrix24, AmoCRM, Yandex API, Twitter, Instagram, VK и Facebook, предлагают определенные данные через свои API. Это могут быть данные предоставляемые только тем, у кого есть access_token, либо API с открытым доступом.

Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов). Структура запроса GET и POST. Выгрузка данных из API облачных систем

Чтобы использовать API, вы отправляете запрос на удаленный веб-сервер и извлекаете необходимые данные.

Что такое API?

API (Application Programming Interface) или интерфейс прикладного программирования — это сервер, который вы можете использовать для извлечения и отправки данных с использованием кода (запросов). API-интерфейсы чаще всего используются для извлечения данных, и это будет основной темой этого урока для начинающих.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Запросы API работают точно так же — вы отправляете запрос на сервер API для данных, а сервер возвращает ответ. API Необходимы для того, чтобы не давать прямой доступ к базе данных. Т.к. при прямом доступе к БД очень велика вероятность неправильных действий, что может привести к различным ошибкам.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

GET и POST запросы с использованием Python

Существует два метода запросов HTTP (протокол передачи гипертекста): запросы GET и POST в Python.

Что такое HTTP/HTTPS?

HTTP — это набор протоколов, предназначенных для обеспечения связи между клиентами и серверами. Он работает как протокол запроса-ответа между клиентом и сервером.

Веб-браузер может быть клиентом, а приложение на компьютере, на котором размещен веб-сайт, может быть сервером.

Итак, чтобы запросить ответ у сервера, в основном используют два метода:

Чтобы сделать HTTP-запросы в python, мы можем использовать несколько HTTP-библиотек, таких как:

Самая элегантная и простая из перечисленных выше библиотек — это Requests. Библиотека запросов не является частью стандартной библиотеки Python, поэтому вам нужно установить ее, чтобы начать работать с ней.

Если вы используете pip для управления вашими пакетами Python, вы можете устанавливать запросы, используя следующую команду:

Если вы используете conda, вам понадобится следующая команда:

После того, как вы установили библиотеку, вам нужно будет ее импортировать. Давайте начнем с этого важного шага:

Синтаксис / структура получения данных через GET/POST запросы к API

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

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

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Метод post() используется, когда вы хотите отправить некоторые данные на сервер.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Ниже приведена подборка различных примеров использования запросов GET и POST через библиотеку REQUESTS. Безусловно, существует еще больше разных случаев. Всегда прежде чем, писать запрос, необходимо обратиться к официальной документации API (например, у Yandex есть документация к API различных сервисов, у Bitrix24 есть документация к API, у AmoCRM есть дока по API, у сервисов Google есть дока по API и т.д.). Вы смотрите какие методы есть у API, какие запросы API принимает, какие данные нужны для API, чтобы он мог выдать информацию в соответствии с запросом. Как авторизоваться, как обновлять ключи доступа (access_token). Все эти моменты могут быть реализованы по разному и всегда нужно ответ искать в официальной документации у поставщика API.

Коды состояния API

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

Ответы сгруппированы в пять классов:

Вот некоторые коды, которые относятся к запросам GET :

Посмотреть информацию по другим ошибкам можно по ссылке HTTP response status codes.

Работа с данными JSON в Python

JSON (JavaScript Object Notation) — это язык API. JSON — это способ кодирования структур данных, который простоту чтения данных машинами. JSON — это основной формат, в котором данные передаются туда и обратно в API, и большинство серверов API отправляют свои ответы в формате JSON.

JSON выглядит так, как будто он содержит словари, списки, строки и целые числа Python. Вы можете думать о JSON как о комбинации этих объектов, представленных в виде строк.

Как передать параметры в get запросе python. Смотреть фото Как передать параметры в get запросе python. Смотреть картинку Как передать параметры в get запросе python. Картинка про Как передать параметры в get запросе python. Фото Как передать параметры в get запросе python

Библиотека JSON имеет две основные функции:

Функция dumps() особенно полезна, поскольку мы можем использовать ее для печати отформатированной строки, которая облегчает понимание вывода JSON.

Теперь попробуем применить функцию dump() — структура данных станет более наглядна:

Дополнительные команды для просмотра параметров Response библиотеки Requests Python

Пример скрипта Python:

Результат:

Примеры запросов GET с использованием библиотеки REQUESTS в PYTHON

Рассмотрим первый пример получения данных из Yandex Метрика API данных через метод get библиотеки requests.

Выгрузка данных из Яндекс Метрики с помощью библиотеки Requests.Get

Код запроса (номер счетчика и токен изменены):

Результат:

Получим цены на нефть в формате JSON с ресурса oilpriceapi.com

Для получения токена, необходимо пройти регистрацию на сайте oilpriceapi.com.

Пример для токена 984a45fflkj09j9870ujkheca7jj977658 (у вас будет свой ключ доступа):

Источник

Краткое руководство по библиотеке Python Requests

Прежде чем начать, убедитесь, что установлена последняя версия Requests.

Для начала, давайте рассмотрим простые примеры.

Создание GET и POST запроса

Импортируйте модуль Requests:

Попробуем получить веб-страницу с помощью get-запроса. В этом примере давайте рассмотрим общий тайм-лайн GitHub:

Простой API Requests означает, что все типы HTTP запросов очевидны. Ниже приведен пример того, как вы можете сделать POST запрос:

Другие типы HTTP запросов, такие как : PUT, DELETE, HEAD и OPTIONS так же очень легко выполнить:

Передача параметров в URL

Как видно, URL был сформирован правильно:

Вы можете передать список параметров в качестве значения:

Содержимое ответа (response)

Мы можем прочитать содержимое ответа сервера. Рассмотрим снова тайм-лайн GitHub:

Бинарное содержимое ответа

Вы можете также получить доступ к телу ответа в виде байтов для не текстовых ответов:

Передача со сжатием gzip и deflate автоматически декодируются для вас.

Например, чтобы создать изображение на основе бинарных данных, возвращаемых при ответе на запрос, используйте следующий код:

Содержимое ответа в JSON

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

Необработанное содержимое ответа

Однако, можно использовать подобный код как шаблон, чтобы сохранить результат в файл:

Использование r.iter_content обработает многое из того, с чем бы вам пришлось иметь дело при использовании r.raw напрямую. Для извлечения содержимого при потоковой загрузке, используйте способ, описанный выше. Обратите внимание, что chunk_size можно свободно скорректировать до числа, которое лучше подходит в вашем случае.

Пользовательские заголовки

Заголовкам дается меньший приоритет, чем более конкретным источникам информации. Например:

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

Более сложные POST запросы

Источник

Библиотека Requests в Python

Библиотека requests фактически является стандартом для выполнения HTTP-запросов.

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

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

Из данного руководства вы узнаете как:

В статье добавлено столько информации, сколько нужно для понимания функций и приведенных примеров.

Для того, чтобы ознакомится с базовыми понятиями работы HTTP-запросов, можно прочитать статью w3schools.

Начало работы с библиотекой requests

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

Если вы используете pipenv для управления пакетами python, то выполните команду:

После установки библиотеки, вы можете импортировать ее в приложение:

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

GET-запросы

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

Поздравляем! Вы сделали первый запрос. Давайте теперь погрузимся немного глубже в ответ на этот запрос.

Объект Response

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

Код ответа HTTP

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

.status_code вернул 200 — это значит, что запрос успешно выполнен и сервер отдал вам запрашиваемые данные.

Иногда эту информацию можно использовать в коде для принятия решений:

Поэтому вы можете сделать проще последний пример, переписав if :

Техническая деталь: Этот тест истинного значения возможен благодаря тому, что __bool__() — перегруженный метод в Response.
Это означает, что стандартное поведение Response было переопределено для учета кода состояния (ответа сервера) при опеределении значения истинности.

Например, статус 204 говорит о том, что запрос был успешным, но в теле ответа нет содержимого.

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

Что еще прочитать: Если вы не знакомы f-строками в Python, то я призываю вас воспользоваться ими, так это отличный способ упростить отформатированные строки.

Теперь вы знаете многое о том, что делать с кодом ответа от сервера. Но когда вы делаете GET-запрос, вы редко заботитесь только об ответе сервера — обычно вы хотите увидеть больше.

Далее вы узнаете как просмотреть фактические данные, которые сервер отправил в теле ответа.

Content

Ответ на Get-запрос, в теле сообщения часто содержит некую ценную информацию, известную как «полезная нагрузка» («Payload»). Используя атрибуты и методы Response, вы можете просматривать payload в разных форматах.

Вы можете делать многое с кодом состояний и телом сообщений. Но если вам нужна дополнительная информация, такая как метаданные о самом ответе, то вам нужно взглянуть на заголовки ответа.

Заголовки

.headers возвращает похожий на словарь объект, позволяющий получить доступ к значениям объекта по ключу. Например, чтобы получить тип содержимого ответа, вы можете получить доступ к Content-Type:

Используя ключ content-type или Content-Type — вы получите одно и то же значение.

Теперь вы узнали основное о Response. Вы увидели его наиболее используемые атрибуты и методы в действии. Давайте сделаем шаг назад и посмотрим как изменяются ответы при настройке Get-запросов.

Параметры строки запроса

Вы даже можете передать значение в байтах:

Строки запроса полезны для параметризации GET-запросов. Вы также можете изменить ваши запросы, добавив или изменив отправляемые вами заголовки.

Заголовки запросов

Заголовок Accept сообщает серверу, какие типы контента может обрабатывать ваше приложение.

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

Другие методы HTTP

В стороне от GET, есть другие популярные методы включая: POST, DELETE, PUT, HEAD, PATCH и OPTIONS. Библиотека Requests предоставляет похожие возможности для работы с каждым из вышеперечисленных методов HTTP:

Каждый вызов функции делает запрос в службу httpbin с использованием соответствующего метода HTTP. Для каждого метода вы можете проверить ответ:

Заголовки, тело ответов, коды состояния и многое другое возвращается в ответе для каждого метода. Далее вы познакомитесь с методами PUT, POST и PATCH и узнаете, чем они отличаются от других типов запросов.

Тело сообщения

Согласно спецификации HTTP — POST, PUT и менее распространенный метод PATCH, передают свои данные через тело сообщения, а не через параметры в строке запроса. Используя эти запросы, вы передатите полезную нагрузку в параметр data соответствующей функции.

Data принимает словарь, список кортежей, байтов или файлоподобный объект.
Вы можете захотеть адаптировать данные, которые отправляете в теле запроса, к конкретным потребностям сервиса, с которым взаимодействуете.

Вы также можете отправить данные в списке кортежей:

Проверка вашего запроса

Когда вы делаете запрос, библиотека requests подготавливает данные, перед тем как отправить их на сервер. Подготовка включает в себя такие вещи, как сериализация JSON и проверка заголовков.

Проверка PreparedRequest дает вам доступ ко всей информации о выполняемом запросе, такой как полезная нагрузка, URL, заголовки, аутенфикация и многое другое.

До сих пор, вы делали много разных видов запросов, но у них всех было одно общее — это неаутентированные запросы к публичным API. Многие службы, с которыми вы можете столкнуться, захотят, чтобы вы каким-то образом идентифицировали себя.

Аутентификация

Одним из примеров API, которые требует аутентификации, является GitHub’s Authenticated User API. Это конечная точка предоставляет информацию о профиле аутентифицированного пользователя. Чтобы сделать запрос к Authenticated User API, вы можете передать свое имя пользователя и пароль в кортеже get() :

Здесь ваш пользовательский механизм TokenAuth получает токен, а затем включает этот токен в заголовок X-TokenAuth вашего запроса.

Проверка SSL-сертификата

В любое время, когда вы отправляете или получаете данные — важна безопасность. Вы общаетесь с защищенными сайтами через HTTP, устанавливая зашифрованное соединение с использованием SSL, что означает, что проверка SSL-сертификата целевого сервера имеет решающее значение.

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

Если вы хотите отключить проверку SSL-сертификата, вы передаете False в параметр verify функции requests :

Библиотека requests даже предупреждает вас, когда вы делаете небезопасный запрос, чтобы помочь сохранить ваши данные в безопасности.

Производительность

Время ожидания

Когда вы отправляете запрос во внешнюю службу, вашей системе потребуется дождаться ответа, прежде чем двигаться дальше. Если ваше предложение слишком долго ожидает ответа — запросы к службе могут быть скопированы, пользовательский интерфейс может пострадать или фоновые задания могут зависнуть.

В первом запросе, время ожидания истекает через одну секунду. Во втором — через 3,05 секунд.

Вы также можете передать кортеж тайм-ауту. Первый элемент в кортеже является тайм-аутом соединения (время, которое позволяет установить клиенту соединение с сервером), а второй элемент — время ожидания чтения (время ожидания ответа после того, как клиент установил соединение):

Если запрос устанавливает соединение в течение 2 секунд и получает данные в течение 5 секунд после установки соединения, то ответ будет возвращен. Если время ожидания истекло — функция вызовет исключение Timeout :

Ваша программа может перехватить исключение и ответить соответствующим образом.

Объект Session

Сеансы используются для сохранения параметров в запросах. Например, если вы хотите использовать одну и ту же аутентификацию для нескольких запросов, вы можете использовать сеанс:

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

Максимальное количество попыток

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

Когда вы монтируете HTTPAdapter и github_adapter в Session — Session будет придерживаться этой конфигурации в каждом запросе к https://api.github.com.

Время ожидания, транспортные адаптеры и сеансы, предназначены для обеспечения эффективности вашего кода и отказоустойчивости приложения.

Заключение

Вы прошли долгий путь в изучении мощной библиотеки Requests в Python.

Поскольку вы узнали как использовать запросы, у вас появилась возможность исследовать широкий мир веб-сервисов, создавать потрясающие приложения и использовать данные, которые они предоставляют.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *