Работа с общедоступными 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 shellOpenWeatherMap — параметры запроса
Конечная точка текущей погоды принимает параметры 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 — локальная установка не требуется.
Все уроки этого курса
- Основы REST API для сбора данных
- Постраничная загрузка и сбор больших наборов данных
- Эффективное хранение собранных данных
- Работа с общедоступными API данных