Kódím.cz
6

JSON

Díky formátu JSON je můžeme snadno ukládat nebo například stahovat z internetu.

Stahování dat z internetu

V předchozím příkladu jsem naše data načetli ze souboru na disku. Pokud však narazíte na vstřícného poskytovatele dat, je možné si data stáhnout z takzvaného API (Application Programming Interface) přímo z internetu. Zkratka API se používá jako označení nějakého přípojného bodu na internetu, odkud si můžete stáhnout data v nějakém strojově čitelném formátu. Nejčastěji je tímto formátem právě JSON.

Malá potíž je ovšem v tom, že Python sám o sobě neobsahuje modul pro stahování dat z internetu. Musíme proto do našeho Pythonu doinstalovat takzvaný externí balíček.

Externí moduly a balíčky

Python sám o sobě obsahuje mnoho užitečných modulů pro řešení různých typů úloh. Už jsme viděli modul random pro práci s náhodnými čísly, modul statistics pro základní statistické funkce nebo modul sys pro práci s operačním systémem. Všem modulům, které jsou součástí základní instalace Pythonu, se dohromady říká standard librarystandardní knihovna. Přehled všech modulů, které standardní knihovna obsahuje můžete najít v Python dokumentaci.

Čas od času ale v Pythonu potřebujeme vykonat nějakou činnost, pro kterou není ve standardní knihovně dostupný žádný modul, například stáhnou data z internetu. V takovém případě budeme muset z internetu stáhnout a nainstalovat takzvaný packagebalíček.

Balíčky obsahují moduly, které po instalaci balíčku můžeme importovat v našem programu.

Ke stahování dat z internetu potřebujete balíček jménem requests. Nainstalujeme jej příkazem

pip3 install requests

Pozor, že ve Windows tento příkaz vypadá takto.

pip install requests

Může se stát, že výše uvedený příkaz nebude fungovat protože nemáte nainstalovaný správce balíčků pip. V takovém případě vyzkoušejte následující příkaz:

python -m pip install requests

Stahování dat z API

Jeden ze cvičných zdrojů dat najdeme na adrese https://api.kodim.cz/python-data/people. Knihovna requests ve svém objektu response obsahuje rovnou metodu pro převod získaných dat z JSON formátu.

import requests

response = requests.get('https://api.kodim.cz/python-data/people')
data = response.json()
print(data)

Cvičení: API a JSON

Čekání na odpověď

Naše get requesty se mohou po cestě internetem k serveru ztratit. Aby náš program nečekal na odpověď donekonečna, v produkčním kódu vždy uplatňujme parametr timeout, určující kolik sekund se má čekat na odpověď.