Praca z publicznymi interfejsami API danych
OpenWeatherMap, Wikipedia i publiczne interfejsy API administracji publicznej — praktyczne przykłady gromadzenia danych.
Praca z publicznymi interfejsami API danych to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Ćwiczenia z publicznymi interfejsami API
Najlepszym sposobem nauki zbierania danych jest korzystanie z rzeczywistych interfejsów API. W tej lekcji wykorzystano trzy przyjazne interfejsy:
- JSONPlaceholder — fikcyjny interfejs REST API do ćwiczeń, bez potrzeby używania klucza
- OpenWeatherMap — rzeczywiste dane pogodowe, wymagany bezpłatny klucz API
- Wikipedia API — treść artykułów i wyszukiwanie
JSONPlaceholder do ćwiczeń
JSONPlaceholder udostępnia fikcyjne wpisy, użytkowników i komentarze bez uwierzytelniania. Doskonale nadaje się do testowania kodu wysyłającego żądania i analizującego odpowiedzi.
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"])Od odpowiedzi do DataFrame
Standardowy przepływ pracy wygląda następująco: należy pobrać dane JSON, a następnie wczytać je bezpośrednio do obiektu DataFrame w celu przeprowadzenia analizy.
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 — uzyskiwanie klucza
OpenWeatherMap wymaga bezpłatnego klucza API przekazywanego jako parametr appid. Kluczy nie należy umieszczać w kodzie — należy odczytywać je ze zmiennej środowiskowej.
import os
API_KEY = os.environ["OWM_API_KEY"] # set OWM_API_KEY in your shellOpenWeatherMap — parametry zapytania
Punkt końcowy bieżącej pogody przyjmuje parametry q (miasto), appid (klucz) oraz units (metryczne lub imperialne).
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()Wyodrębnianie zagnieżdżonych pól JSON
Rzeczywiste odpowiedzi API są głęboko zagnieżdżone. Należy przechodzić do kolejnych poziomów za pomocą łańcuchów kluczy oraz używać .get() z wartościami domyślnymi dla pól, których może brakować.
temp = data["main"]["temp"]
humidity = data["main"]["humidity"]
desc = data["weather"][0]["description"]
print(f"{temp} C, {humidity}% humidity, {desc}")Zbieranie danych pogodowych dla wielu miast
Należy przejść pętlą po miastach, spłaszczyć potrzebne pola do listy słowników, a następnie utworzyć obiekt 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)Wikipedia API
Wikipedia API udostępnia wyszukiwanie i treść artykułów. Wymaga parametrów action i format=json, a także opisowego nagłówka 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"]Pobieranie fragmentów artykułów
Należy użyć prop=extracts wraz z exintro=True, aby pobrać akapit wprowadzający artykułu — jest to przydatne przy tworzeniu tekstowych zbiorów danych.
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])Czytanie dokumentacji API
Każdy interfejs API działa inaczej. Przed rozpoczęciem kodowania należy zapoznać się z dokumentacją dotyczącą: bazowego adresu URL, wymaganych parametrów, sposobu uwierzytelniania, struktury odpowiedzi i limitów zapytań.
Najpierw należy interaktywnie przetestować jedno żądanie i sprawdzić wynik resp.json(), a dopiero potem zbudować pętlę na podstawie rzeczywistej struktury danych.
Odpowiedzialne korzystanie z API
Publiczne interfejsy API są współdzielonymi zasobami. Należy korzystać z nich odpowiedzialnie:
- Wysyłać identyfikujący nagłówek
User-Agent - Buforować wyniki, aby nie pobierać ponownie tych samych danych
- Robić przerwy między żądaniami i przestrzegać limitów zapytań
- Zapoznać się z warunkami korzystania z każdego interfejsu API i ich przestrzegać
Szybki test: API do ćwiczeń
Należy przetestować kod wysyłający żądania i analizujący odpowiedzi bez rejestrowania się w celu uzyskania klucza API.
Podsumowanie: publiczne interfejsy API danych
Można już zbierać dane z rzeczywistych interfejsów API:
- JSONPlaceholder do ćwiczeń bez uwierzytelniania
- OpenWeatherMap z parametrami
q,appidiunitsoraz kluczem pobieranym ze zmiennej środowiskowej - Wikipedia API do wyszukiwania i pobierania fragmentów artykułów
- Przepływ pracy od pobrania danych do obiektu DataFrame oraz sposób przechodzenia przez zagnieżdżony kod JSON
- Dobre praktyki: User-Agent, buforowanie, limity zapytań i warunki korzystania
To kończy temat zbierania danych. Następnie: wyrażenia regularne w AI do przetwarzania tekstu.
Często zadawane pytania
Czy lekcja „Praca z publicznymi interfejsami API danych” jest bezpłatna?
Tak — pełny tekst „Praca z publicznymi interfejsami API danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Praca z publicznymi interfejsami API danych”?
OpenWeatherMap, Wikipedia i publiczne interfejsy API administracji publicznej — praktyczne przykłady gromadzenia danych. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Praca z publicznymi interfejsami API danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy REST API do gromadzenia danych
- Stronicowanie i gromadzenie dużych zbiorów danych
- Efektywne przechowywanie zebranych danych
- Praca z publicznymi interfejsami API danych