0Pricing
Learn AI with Python · Lekcja

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 shell

OpenWeatherMap — 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, appid i units oraz 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

  1. Podstawy REST API do gromadzenia danych
  2. Stronicowanie i gromadzenie dużych zbiorów danych
  3. Efektywne przechowywanie zebranych danych
  4. Praca z publicznymi interfejsami API danych
← Powrót do Learn AI with Python