Подробное руководство по Python библиотеке requests с примерами использования.
Введение
Большая часть интернет-ресурсов взаимодействует с помощью HTTP-запросов. Эти HTTP-запросы выполняются устройствами или браузерами (клиентами) при обращении к веб-сервису.
В Python библиотека requests позволяет делать HTTP-запросы в нашем коде, и это очень востребовано, так как многие современные приложения используют данные сторонних сервисов с помощью API.
Python requests — отличная библиотека. Она позволяет выполнять GET и POST запросы с возможностью передачи параметров URL, добавления заголовков, размещения данных в форме и многое другое.
С помощью библиотеки можно делать запросы практически на каждый сайт/веб-страницу, но ее сила заключается в доступе к API для получения данных в виде JSON, с которыми можно работать в своем коде, приложениях и скриптах.
Установка библиотеки
Чтобы установить библиотеку requests, запустите команду:
pip install requests
Будет установлен модуль и зависимости, если таковые имеются.
Создание простого запроса
Давайте попробуем сделать простой запрос на мой сайт, https://egorovegor.ru (вы можете использовать любой сайт):
import requests r = requests.get("https://egorovegor.ru")
Для начала импортируем модуль requests. Из него мы используем функцию get() с переданным URL нашего сайта. В этой строке кода делается запрос на https://egorovegor.ru, а ответ сохраняется в переменную r.
Для выполнения запроса к удаленному ресурсу требуется подключение к сети интернет.
Теперь у нас есть объект ответа (response), присвоенный переменной r. Мы можем получить всю необходимую информацию из этого объекта.
После того, как запрос сделан, мы получаем ответ от веб-сервера на котором расположен сайт и можем прочитать его код:
r.status_code
Если ваш код состояния равен 200, это означает что запрос был выполнен успешно. С полным списком кодов состояния HTTP можно ознакомится на странице в Википедии. Вы можете получить доступ к исходному коду веб-страницы с помощью свойства .text:
print(r.text)
Весь исходный код веб-страницы будет распечатан в вашей консоли.
Это полезно при выполнении сбора данных с веб страниц.
Выполнение запросов к API
Максимально раскрыться библиотеке позволяет взаимодействие с внешними API. В данном руководстве мы будем использовать API, который доступен на движке моего сайте. Мы выполним запрос, который должен вернуть информацию о сайте.
import requests r = requests.get("https://egorovegor.ru/wp-json/") print(r.status_code)
Теперь у нас есть объект response, сохраненный в переменную r. Мы можем получить из него всю необходимую информацию.
Содержимое ответа
Мы можем читать содержимое различными способами, используя атрибуты и функции, предоставляемые модулем requests.
r.status_code # 200 r.encoding # utf-8 r.url # https://egorovegor.ru/wp-json/ r.json() # возвращает содержимое в формате json r.text # возвращает содержимое в текстовом формате r.content # возвращает содержимое ответа в байтах
r.status_code возвращает код, указывающий, был ли запрос успешным или нет. 200 означает успешный. Общие коды статусов, которые вы, вероятно, видели — 200, 404 и 500. 404 означает ошибку клиента, а 500 означает ошибку сервера.
r.encoding возвращает кодировку ответа, основанную на HTTP заголовках.
r.url возвращает запрошенный URL.
r.json возвращает разобранные JSON данные из ответа.
r.text возвращает ответ в текстовом формате
r.content возвращает ответ, отформатированный в байтах
Работа с JSON ответами
JSON-данные, полученные по ссылке https://egorovegor.ru/wp-json/, содержат много информации о сайте, давайте попробуем с ней поработать.
import requests r = requests.get("https://egorovegor.ru/wp-json/") print (r.json())
Ответ сервера:
Обратите внимание, я сократил ответ сервера из за большого количества информации в json.
r.json() разбирает ответ в Python-совместимый тип данных, т.е. словарь или список. Разберем на примере как использовать полученные JSON данные.
import requests r = requests.get("https://egorovegor.ru/wp-json/") data = r.json() name = data["name"] description = data["description"] url = data["url"] timezone = data["timezone_string"] print(f"Информация о сайте: {url}") print(f"Название: {name}") print(f"Описание: {description}") print(f"Часовой пояс: {timezone}")
Выполнив данный сценарий мы получим результат указанный ниже.
Информация о сайте: https://egorovegor.ru Название: Cайт Егорова Егора Описание: Технологии, интернет-маркетинг и Python Часовой пояс: Europe/Moscow
Использование параметров в URL
При работе с запросами можно передавать параметры в строке запроса URL. Параметры URL — распространенный способ передачи данных, их часто можно увидеть после вопросительного знака в URL. Пример: https://egorovegor.ru/?s=Python — это URL для поиска статей с ключевым словом Python, получается что s=Python — это его параметр.
Чтобы передать параметры в URL, их нужно указать как словарь в аргумент ключевого слова params. Например; ?s=Python будет записан как {‘s’:’Python’}.
import requests r = requests.get("https://egorovegor.ru/", params={'s': 'Python'}) print(r.url) # https://egorovegor.ru/?s=Python
Наверняка вы заметили, что в r.url сохранился URL, который автоматически добавил к нему параметр; ?s=Python.
Заключение
Мы рассмотрели как использовать библиотеку requests в Python и научились парсить данные с сайтов.
Для более глубокого изучения библиотеки requests можно обратиться к официальной документации.