Oppikaa tekoälyä Pythonilla · Oppitunti

Julkisten data-API:en käyttäminen

OpenWeatherMap, Wikipedia ja julkiset viranomais-API:t – käytännön esimerkkejä datan keruusta.

Oppitunti 4/413 vaihetta

Julkisten data-API:en käyttäminen on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Harjoittelu julkisilla API-rajapinnoilla

Paras tapa oppia tiedonkeruuta on käyttää oikeita API-rajapintoja. Tässä oppitunnissa käytetään kolmea helppokäyttöistä rajapintaa:

  • JSONPlaceholder — harjoitteluun tarkoitettu valheellinen REST API, joka ei vaadi avainta
  • OpenWeatherMap — oikeita säätietoja tarjoava rajapinta, johon saa ilmaisen API-avaimen
  • Wikipedia API — artikkelisisältöä ja hakua tarjoava rajapinta

JSONPlaceholder harjoitteluun

JSONPlaceholder tarjoaa valheellisia julkaisuja, käyttäjiä ja kommentteja ilman todennusta. Se sopii erinomaisesti pyyntö- ja jäsentämiskoodin testaamiseen.

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"])

Vastauksesta DataFrame-työnkulkuun

Vakiotyönkulku on seuraava: noutakaa JSON, ja ladatkaa se sitten suoraan DataFrameen analysoitavaksi.

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 — avaimen hankkiminen

OpenWeatherMap vaatii ilmaisen API-avaimen, joka välitetään appid-parametrina. Älkää sijoittako avaimia koodiin, vaan lukekaa ne ympäristömuuttujasta.

import os

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

OpenWeatherMap — kyselyparametrit

Nykyisen sään päätepiste käyttää parametreja q (kaupunki), appid (avain) ja units (metrijärjestelmä tai imperiaalinen järjestelmä).

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()

Sisäkkäisten JSON-kenttien poimiminen

Oikeiden API-rajapintojen vastaukset ovat usein syvästi sisäkkäisiä. Siirtykää sisemmälle ketjutettujen avainten avulla ja käyttäkää .get()-metodia oletusarvojen kanssa kentille, jotka saattavat puuttua.

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

Säätietojen kerääminen useista kaupungeista

Käykää kaupungit silmukassa läpi, litistäkää tarvitsemienne kenttien arvot sanakirjojen luetteloksi ja muodostakaa sitten 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 tarjoaa haun ja artikkelisisällön. Se odottaa action- ja format=json-parametreja sekä kuvailevaa User-Agent-otsaketta.

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"]

Artikkelikatkelmien noutaminen

Käyttäkää prop=extracts-parametria yhdessä exintro=True-asetuksen kanssa artikkelin johdantokappaleen noutamiseen — tämä on kätevää tekstiaineistojen rakentamisessa.

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-dokumentaation lukeminen

Jokainen API-rajapinta on erilainen. Lukekaa dokumentaatiosta ennen koodaamista seuraavat asiat: perus-URL-osoite, pakolliset parametrit, todennusmenetelmä, vastauksen rakenne ja nopeusrajoitukset.

Testatkaa yksi pyyntö vuorovaikutteisesti, tarkastelkaa arvoa resp.json() ja rakentakaa silmukka todellisen rakenteen ympärille.

API-rajapintojen vastuullinen käyttö

Julkiset API-rajapinnat ovat yhteisiä resursseja. Kunnioittakaa niitä:

  • Lähettäkää tunnistava User-Agent
  • Välimuistittakaa tulokset, jotta ette hae samoja tietoja uudelleen
  • Odottakaa pyyntöjen välillä ja noudattakaa nopeusrajoituksia
  • Lukekaa kunkin API-rajapinnan käyttöehdot ja noudattakaa niitä

Pikatarkistus: harjoittelu-API

Haluatte testata pyyntö- ja jäsentämiskoodianne ilman API-avaimen rekisteröimistä.

Kertaus: julkiset data-API-rajapinnat

Harjoittelitte tiedon keräämistä oikeista API-rajapinnoista:

  • JSONPlaceholder todennusta tarvitsemattomaan harjoitteluun
  • OpenWeatherMap, jonka parametreja ovat q, appid ja units ja jonka avain luetaan ympäristöstä
  • Wikipedia API hakuun ja artikkelikatkelmien noutamiseen
  • Noutamisesta DataFrameen etenevä työnkulku sekä sisäkkäisen JSON-datan käsittely
  • Hyvät toimintatavat: User-Agent, välimuisti, nopeusrajoitukset ja käyttöehdot

Tiedonkeruu on nyt valmis. Seuraavaksi käsittelette säännöllisiä lausekkeita tekstipohjaisessa tekoälyssä.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Julkisten data-API:en käyttäminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Julkisten data-API:en käyttäminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Julkisten data-API:en käyttäminen”?

OpenWeatherMap, Wikipedia ja julkiset viranomais-API:t – käytännön esimerkkejä datan keruusta. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Julkisten data-API:en käyttäminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. REST API -rajapintojen perusteet datan keruuseen
  2. Sivutus ja suurten aineistojen kerääminen
  3. Kerätyn datan tehokas tallentaminen
  4. Julkisten data-API:en käyttäminen
← Takaisin: Oppikaa tekoälyä Pythonilla