Знакомство с Python библиотекой requests

Знакомство с Python библиотекой requests

Подробное руководство по 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())

Ответ сервера:

Знакомство с Python библиотекой requests

Обратите внимание, я сократил ответ сервера из за большого количества информации в 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 можно обратиться к официальной документации.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий