0Pricing
Learn AI with Python · Урок

Работа с общедоступными API данных

OpenWeatherMap, Wikipedia и общедоступные государственные API — практические примеры сбора данных.

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

Практика работы с общедоступными API

Лучший способ научиться собирать данные — обращаться к реальным API. В этом уроке используются три удобных API:

  • JSONPlaceholder — поддельный REST API для практики, ключ не требуется
  • OpenWeatherMap — реальные данные о погоде, требуется бесплатный ключ API
  • API Википедии — содержимое статей и поиск

JSONPlaceholder для практики

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

import requests

resp = requests.get("https://jsonplaceholder.typicode.com/posts", timeout=10)
resp.raise_for_status()
posts = resp.json()
print(len(posts), "posts")
print(posts[0]["title"])

От ответа к рабочему процессу с DataFrame

Стандартный рабочий процесс таков: получить JSON, а затем сразу загрузить его в DataFrame для анализа.

import pandas as pd

posts = requests.get("https://jsonplaceholder.typicode.com/posts", timeout=10).json()
df = pd.DataFrame(posts)
print(df.head())
print(df["userId"].value_counts())

OpenWeatherMap — получение ключа

Для OpenWeatherMap требуется бесплатный ключ API, передаваемый в параметре appid. Не храните ключи в коде — считывайте их из переменной окружения.

import os

API_KEY = os.environ["OWM_API_KEY"]   # set OWM_API_KEY in your shell

OpenWeatherMap — параметры запроса

Конечная точка текущей погоды принимает параметры q (город), appid (ключ) и units (метрическая или имперская система).

import requests, os

params = {
    "q": "Istanbul",
    "appid": os.environ["OWM_API_KEY"],
    "units": "metric",
}
resp = requests.get("https://api.openweathermap.org/data/2.5/weather", params=params, timeout=10)
resp.raise_for_status()
data = resp.json()

Извлечение вложенных полей JSON

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

temp = data["main"]["temp"]
humidity = data["main"]["humidity"]
desc = data["weather"][0]["description"]
print(f"{temp} C, {humidity}% humidity, {desc}")

Сбор данных о погоде для многих городов

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

cities = ["Istanbul", "London", "Tokyo"]
rows = []
for c in cities:
    p = {"q": c, "appid": os.environ["OWM_API_KEY"], "units": "metric"}
    d = requests.get("https://api.openweathermap.org/data/2.5/weather", params=p, timeout=10).json()
    rows.append({"city": c, "temp": d["main"]["temp"], "desc": d["weather"][0]["description"]})
import pandas as pd
df = pd.DataFrame(rows)

API Википедии

API Википедии предоставляет поиск и содержимое статей. Ему требуются параметры action и format=json, а также описательный заголовок User-Agent.

params = {
    "action": "query",
    "list": "search",
    "srsearch": "machine learning",
    "format": "json",
}
headers = {"User-Agent": "data-collector/1.0 (you@example.com)"}
resp = requests.get("https://en.wikipedia.org/w/api.php", params=params, headers=headers, timeout=10)
results = resp.json()["query"]["search"]

Получение фрагментов статей

Используйте prop=extracts вместе с exintro=True, чтобы получить вводный абзац статьи — это удобно для создания наборов текстовых данных.

params = {
    "action": "query",
    "prop": "extracts",
    "exintro": True,
    "explaintext": True,
    "titles": "Artificial intelligence",
    "format": "json",
}
resp = requests.get("https://en.wikipedia.org/w/api.php", params=params, timeout=10)
pages = resp.json()["query"]["pages"]
for pid, page in pages.items():
    print(page["extract"][:300])

Чтение документации API

Все API различаются. Перед написанием кода изучите в документации: базовый URL, обязательные параметры, способ аутентификации, структуру ответа и ограничения частоты запросов.

Сначала проверьте один запрос в интерактивном режиме, изучите resp.json(), а затем постройте цикл с учётом реальной структуры данных.

Ответственное использование API

Общедоступные API — это общие ресурсы. Соблюдайте следующие правила:

  • Отправляйте идентифицирующий заголовок User-Agent
  • Кэшируйте результаты, чтобы не запрашивать одни и те же данные повторно
  • Делайте паузы между запросами и соблюдайте ограничения частоты запросов
  • Изучайте и соблюдайте условия использования каждого API

Быстрая проверка: практический API

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

Итоги: общедоступные API данных

Вы попрактиковались в сборе данных из реальных API:

  • JSONPlaceholder для практики без аутентификации
  • OpenWeatherMap с параметрами q, appid, units и ключом из окружения
  • API Википедии для поиска и получения фрагментов статей
  • Рабочий процесс от получения данных до загрузки в DataFrame и переход по вложенному JSON
  • Ответственное использование API: User-Agent, кэширование, ограничения частоты запросов и условия использования

На этом сбор данных завершён. Далее: регулярные выражения для ИИ, работающего с текстом.

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

Урок «Работа с общедоступными API данных» бесплатный?

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

Чему я научусь в уроке «Работа с общедоступными API данных»?

OpenWeatherMap, Wikipedia и общедоступные государственные API — практические примеры сбора данных. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

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

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

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

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

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

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