0Pricing
Learn AI with Python · Урок

Основы REST API для сбора данных

HTTP GET/POST, заголовки, аутентификация (ключ API, Bearer) и разбор JSON с помощью requests.

«Основы REST API для сбора данных» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Зачем нужны интерфейсы API для ИИ

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

В этом курсе используются Python и популярная библиотека requests для получения и сохранения этих данных.

Что такое REST-интерфейс

REST-интерфейс предоставляет доступ к ресурсам через HTTP. Вы отправляете запрос по URL (конечной точке) и получаете данные, обычно в формате JSON.

Основные методы HTTP:

  • GET — чтение данных
  • POST — создание данных
  • PUT/PATCH — обновление
  • DELETE — удаление

Для сбора данных чаще всего используется GET.

Первый запрос GET

requests.get(url) отправляет запрос GET и возвращает объект ответа. Ответ содержит код состояния, заголовки и тело.

import requests

resp = requests.get("https://api.example.com/users")
print(resp.status_code)   # 200
print(resp.text[:200])    # raw body as a string

Проверка response.status_code

Код состояния сообщает, успешно ли выполнен запрос:

  • 200 OK
  • 301/302 перенаправление
  • 400 некорректный запрос
  • 401/403 проблема аутентификации
  • 404 не найдено
  • 429 превышен лимит запросов
  • 500 ошибка сервера
resp = requests.get(url)
if resp.status_code == 200:
    print("Success")
else:
    print("Failed:", resp.status_code)

Разбор JSON с помощью response.json()

Большинство интерфейсов возвращают JSON. response.json() автоматически разбирает тело ответа в словари и списки Python.

Не разбирайте JSON вручную — .json() выполняет это сам и выдаёт понятную ошибку, если тело не содержит корректный JSON.

resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])

Передача параметров запроса с помощью params

Фильтруйте запросы и настраивайте их с помощью параметров запроса. Передайте словарь в params, и requests самостоятельно сформирует URL, обработав кодирование.

В URL пример преобразуется в ?city=London&units=metric.

params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())

Передача заголовков

Заголовки передают метаданные, например тип содержимого, агент пользователя или ключ/токен интерфейса API. Передайте их в виде словаря в headers.

Для доступа многие интерфейсы требуют заголовок Authorization.

headers = {
    "Authorization": "Bearer YOUR_TOKEN",
    "User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())

raise_for_status() для надёжного кода

Вместо ручной проверки кодов вызовите resp.raise_for_status(). Для любого ответа 4xx или 5xx он выдаёт HTTPError, поэтому о сбоях становится известно сразу.

Оберните вызов в try/except, чтобы корректно обрабатывать ошибки.

import requests

try:
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    data = resp.json()
except requests.HTTPError as e:
    print("HTTP error:", e)
except requests.RequestException as e:
    print("Network error:", e)

Всегда задавайте timeout

Без timeout зависший сервер может навсегда остановить выполнение скрипта. Всегда задавайте это значение (в секундах).

В циклах сбора данных, обращающихся к тысячам конечных точек, отсутствие timeout часто приводит к зависанию заданий.

resp = requests.get(url, timeout=10)   # give up after 10 seconds

Повторное использование соединений с помощью Session

requests.Session повторно использует базовое TCP-соединение между запросами и позволяет один раз задать заголовки. При большом количестве вызовов к одному узлу это значительно быстрее.

import requests

session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})

for uid in [1, 2, 3]:
    resp = session.get(f"https://api.example.com/users/{uid}")
    print(resp.json()["name"])

session.close()

Вспомогательная функция для чистого получения данных

Оформите этот шаблон в виде повторно используемой функции: создайте сеанс, задайте timeout, вызывайте исключение при ошибках и возвращайте разобранный JSON.

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

def fetch_json(session, url, params=None):
    resp = session.get(url, params=params, timeout=10)
    resp.raise_for_status()
    return resp.json()

Быстрая проверка: надёжные запросы

Вы хотите, чтобы код автоматически выдавал исключение при ответе 404 или 500.

Итоги: основы REST-интерфейсов

Теперь Вы умеете получать данные через HTTP:

  • requests.get(url, params=..., headers=...) для отправки запросов
  • response.status_code и raise_for_status() для обнаружения сбоев
  • response.json() для разбора тела ответа
  • timeout для предотвращения зависаний
  • requests.Session для повторного использования соединений и заголовков

Далее: сбор наборов данных, охватывающих множество страниц.

Часто задаваемые вопросы

Урок «Основы REST API для сбора данных» бесплатный?

Да — полный текст урока «Основы REST API для сбора данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Основы REST API для сбора данных»?

HTTP GET/POST, заголовки, аутентификация (ключ API, Bearer) и разбор JSON с помощью requests. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы REST API для сбора данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы REST API для сбора данных
  2. Постраничная загрузка и сбор больших наборов данных
  3. Эффективное хранение собранных данных
  4. Работа с общедоступными API данных
← Назад к Learn AI with Python