Содержание статьи

JSON (JavaScript Object Notation) является стандартным форматом передачи данных между клиентом и сервером. В Python для работы с JSON чаще всего используют библиотеку requests, которая позволяет отправлять HTTP-запросы и получать ответы в удобном формате.
При запросе данных важно проверять статус ответа сервера и обрабатывать возможные ошибки, такие как таймауты, отсутствие соединения или неправильный формат JSON. Это предотвращает сбои при последующей обработке данных.
Для извлечения конкретных данных из JSON используются стандартные структуры Python, такие как словари и списки. Они позволяют легко фильтровать, сортировать и преобразовывать информацию в нужный формат.
При работе с защищёнными ресурсами необходимо учитывать авторизацию через токены или ключи API. Передача токена в заголовках запроса обеспечивает доступ к приватным данным без раскрытия учетных данных.
Полученные JSON-данные можно сохранять в файлы с расширением .json или .txt для дальнейшей обработки, анализа или интеграции с другими инструментами Python, такими как pandas или matplotlib для визуализации.
Установка и настройка библиотеки requests для работы с HTTP-запросами

Для установки библиотеки requests в Python используйте команду pip install requests. Проверить успешную установку можно через pip show requests, где будет указана версия и путь к библиотеке.
Импортировать библиотеку в проект следует с помощью строки import requests. После этого доступны функции для отправки HTTP-запросов, такие как requests.get() для получения данных и requests.post() для отправки.
Для работы с JSON рекомендуется использовать параметр response.json(), который автоматически преобразует ответ сервера в Python-словарь. При этом важно проверять status_code, чтобы убедиться, что запрос выполнен успешно (код 200).
Для повышения стабильности запросов можно настроить таймаут через параметр timeout и задать пользовательские заголовки через headers, например User-Agent или ключ API для авторизованных запросов.
При работе с большим количеством запросов стоит использовать сессии через requests.Session(). Это позволяет сохранять cookies и заголовки между запросами, снижая нагрузку на сервер и ускоряя обработку данных.
Отправка GET-запроса и получение JSON с публичного API

Для получения данных с публичного API используется метод GET. Он позволяет запросить информацию без необходимости отправки данных в теле запроса. В Python это реализуется через requests.get().
Пример базового GET-запроса:
- Импорт библиотеки: import requests
- Указание URL публичного API, например: url = «https://api.exchangerate.host/latest»
- Отправка запроса: response = requests.get(url)
- Проверка статуса ответа: if response.status_code == 200:
- Преобразование JSON в Python-словарь: data = response.json()
После преобразования JSON можно получить конкретные значения, например курсы валют:
- rate_usd = data[«rates»][«USD»]
- rate_eur = data[«rates»][«EUR»]
Для запросов к API с параметрами используют аргумент params. Пример запроса с параметром даты:
params = {"base": "USD", "symbols": "EUR,GBP"}
response = requests.get(url, params=params)
data = response.json()
Использование параметров позволяет фильтровать данные на стороне сервера и получать только необходимую информацию, сокращая время обработки и размер ответа.
Обработка ошибок и проверка статуса ответа сервера

При работе с HTTP-запросами важно контролировать ошибки и корректность ответа сервера. Основной показатель успешного запроса – status_code равный 200. Любое другое значение требует обработки.
Типичный подход к проверке статуса:
- Отправка запроса: response = requests.get(url)
- Проверка кода ответа: if response.status_code == 200: – обработка данных
- Обработка ошибок: else: print(«Ошибка:», response.status_code)
Для более точной диагностики используют обработку исключений через блок try-except:
- requests.exceptions.Timeout – превышено время ожидания ответа
- requests.exceptions.ConnectionError – проблемы с сетью или сервером
- requests.exceptions.HTTPError – ошибки протокола HTTP (4xx, 5xx)
- requests.exceptions.JSONDecodeError – некорректный формат JSON
Пример обработки:
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
except requests.exceptions.Timeout:
print("Сервер не ответил в течение 10 секунд")
except requests.exceptions.ConnectionError:
print("Ошибка соединения")
except requests.exceptions.HTTPError as err:
print("HTTP ошибка:", err)
except ValueError:
print("Некорректный JSON")
Регулярная проверка статуса и использование исключений позволяет избежать сбоев при получении и обработке JSON с сайта.
Парсинг JSON и извлечение нужных данных в Python

После получения JSON-ответа от сервера его необходимо преобразовать в Python-структуры для работы. Метод response.json() возвращает словарь или список, в зависимости от структуры данных.
Пример обработки словаря:
data = response.json() date = data["date"] rates = data["rates"] usd_rate = rates["USD"] eur_rate = rates["EUR"]
Для вложенных структур используются последовательные обращения по ключам или индексу:
- Списки: items = data[«items»][0][«name»]
- Словари: value = data[«config»][«settings»][«option»]
Для перебора коллекций применяют циклы:
for currency, rate in data["rates"].items(): print(currency, rate)
Если ключ может отсутствовать, используют метод get для безопасного извлечения значений: usd_rate = rates.get(«USD», 0), где 0 – значение по умолчанию.
Для сложных фильтров JSON удобно применять list comprehensions или функции filter() для быстрого извлечения нужных элементов без промежуточных шагов.
Использование заголовков и параметров для сложных запросов

Для работы с API, требующими дополнительной информации, используют заголовки и параметры запроса. Заголовки передают данные о клиенте, формате ответа или авторизации, параметры фильтруют информацию на сервере.
Пример добавления заголовков:
headers = {
"User-Agent": "Python-requests/2.31",
"Authorization": "Bearer ваш_токен"
}
response = requests.get(url, headers=headers)
Параметры запроса передаются через аргумент params в виде словаря:
params = {
"base": "USD",
"symbols": "EUR,GBP",
"date": "2025-11-18"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
Использование заголовков и параметров позволяет:
- Получать данные с авторизацией без раскрытия логина и пароля
- Фильтровать и ограничивать результаты на стороне сервера
- Изменять формат ответа, например получать JSON вместо XML
- Оптимизировать количество передаваемой информации
Работа с авторизацией и токенами при получении JSON

Многие API требуют авторизацию для доступа к данным. Наиболее распространённый способ – использование токенов в заголовках запроса. В Python это реализуется через параметр headers библиотеки requests.
Пример использования Bearer-токена:
headers = {
"Authorization": "Bearer ваш_токен",
"User-Agent": "Python-requests/2.31"
}
response = requests.get(url, headers=headers)
data = response.json()
Если API использует ключи в параметрах URL, их передают через params:
params = {"api_key": "ваш_ключ", "limit": 50}
response = requests.get(url, params=params)
data = response.json()
Для повышения безопасности не храните токены и ключи в коде. Используйте переменные окружения или файлы конфигурации с ограниченным доступом.
При работе с сессиями через requests.Session() можно сохранять заголовки и токены между запросами, что ускоряет многократное обращение к API и снижает нагрузку на сервер.
Сохранение полученных JSON-данных в файл для дальнейшей обработки

Для сохранения JSON-данных в файл используется стандартная библиотека json. Это позволяет сохранять информацию в структурированном виде и легко загружать её в будущем.
Пример записи данных в файл:
import json
with open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
Флаги ensure_ascii=False и indent=4 обеспечивают корректное отображение символов и читаемую структуру файла.
Для быстрого просмотра данных можно использовать таблицу, если JSON содержит списки элементов:
| Валюта | Курс |
|---|---|
| USD | 1.12 |
| EUR | 0.95 |
| GBP | 0.83 |
Для повторного использования данных достаточно загрузить файл через json.load():
with open("data.json", "r", encoding="utf-8") as file:
data = json.load(file)
Сохранение JSON в файлы особенно полезно при больших объемах данных или при необходимости анализа с использованием библиотек Python, таких как pandas.
Вопрос-ответ:
Как установить библиотеку requests для работы с JSON в Python?
Для установки используйте команду pip install requests. После установки проверьте версию с помощью pip show requests. В коде библиотеку подключают через import requests, что позволяет отправлять HTTP-запросы и получать ответы сервера.
Как безопасно отправлять GET-запросы к публичным API?
Используйте метод requests.get(), указывая URL и при необходимости параметры через params. Для контроля ответа проверяйте response.status_code. Если статус не 200, обработайте ошибку через условные операторы или блок try-except. Это защищает от некорректных данных и сбоев сети.
Какие методы есть для извлечения конкретных данных из JSON?
После преобразования ответа сервера с помощью response.json() получаем словарь или список. Извлекаем значения по ключам: data[«rates»][«USD»]. Для списков применяют индексы, а для безопасного доступа используют dict.get(«ключ», значение_по_умолчанию). Циклы и list comprehension помогают фильтровать нужные элементы.
Как работать с авторизацией и токенами при запросах к API?
Если API требует токен, его передают через заголовки: headers = {«Authorization»: «Bearer токен»}. Для ключей в URL используют params = {«api_key»: «ключ»}. Чтобы не хранить токены в коде, применяют переменные окружения или отдельные конфигурационные файлы. Сессии requests.Session() позволяют повторно использовать заголовки между запросами.
Как сохранить полученные JSON-данные для дальнейшего анализа?
Используйте библиотеку json. Данные записываются командой json.dump(data, file, ensure_ascii=False, indent=4). Для загрузки используйте json.load(file). Если JSON содержит таблицы или списки элементов, можно визуально оформить их с помощью HTML-
