Skip to content

Request bez přihlášení

Instalace knihoven

Stažení knihoven pro posílání http requestů a případně zpracování dat.

pip install requests pandas
Pandas slouží jako nástroj pro práci s daty. Umožňuje načítat data z různých zdrojů, jako jsou například CSV nebo JSON. Dále umožňuje manipulaci s daty, jako je filtrování, agregace, nebo spojování.

Requests je knihovna pro posílání http requestů.

poetry add requests pandas
Pandas slouží jako nástroj pro práci s daty. Umožňuje načítat data z různých zdrojů, jako jsou například CSV nebo JSON. Dále umožňuje manipulaci s daty, jako je filtrování, agregace, nebo spojování.

Requests je knihovna pro posílání http requestů.

install.packages(c("httr", "readr"))
Jazyk R nepotřebuje žádnou další knihovnu pro práci s daty.

Knihovna httr slouží k posílání http requestů.

Readr slouží k načítání dat formátu například CSV nebo JSON.

Více o http requestech zde.

Template pro request na webové služby.

import requests
import pandas as pd
from io import StringIO

url = "https://ws.ujep.cz/ws/services/rest2/test/endpoint"
params = {
    "outputFormat": "CSV",
    "outputFormatEncoding": "utf-8",
}

data = requests.get(
    url,
    params=params,
)

df = pd.read_csv(StringIO(data.text), sep=";")
library(httr)
library(readr)

url <- "https://ws.ujep.cz/ws/services/rest2/test/endpoint"
params <- list(
    outputFormat = "CSV",
    outputFormatEncoding = "utf-8"
)

data <- GET(
    url,
    query = params
)

df <- read_csv2(rawToChar(data$content))

K odeslání requestu je potřeba znát url služby a url parametry (také jako query parametry, dále jen parametry), které služba vyžaduje.

Request /predmety/getPredmetInfo

Na ukázku jeden konkrétní příklad. /predmety/getPredmetInfo

Výše uvedený odkaz otevře rozhraní služby /predmety/getPredmetInfo. K vyplnění je zde několik parametrů. Červenou hvězdičkou jsou označeny povinné parametry. Bez těchto parametrů nelze request odeslat (resp. server vrátí status kód 500 - Internal Server Error).

Služba s vyplněnými parametry vypadá následovně:

ws example

Po odeslání requestu se zobrazí výsledek volání webové služby. Kromě konkrétního souboru ke stažení nás hlavně zajímá Adresa. Z té vyčteme url a názvy jednotlivých parametrů.

ws output example

Url parametry

Parametry a jejch hodnoty se v adrese nacházejí za otazníkem. V našem případě vypadá takto:

?katedra=KMA&zkratka=MA2&rok=2023&lang=cs&outputFormat=CSV&outputFormatEncoding=utf-8.

Jednotlivé parametry a jejich hodnoty jsou ve formátu parametr=hodnota. Mezi jednotlivými parametry je oddělovač &. Naše parametry v tomto případě jsou:

Parametr Hodnota
katedra KMA
zkratka MA2
rok 2023
lang cs
outputFormat CSV

Po doplnění správné url a parametrů by request na tuto službu vypadal následovně:

import requests
import pandas as pd
from io import StringIO

url = "https://ws.ujep.cz/ws/services/rest2/predmety/getPredmetInfo"

params = {
    "katedra": "KMA",
    "zkratka": "MA2",
    "rok": "2023",
    "lang": "cs",
    "outputFormat": "CSV", # (1)!
    "outputFormatEncoding": "utf-8"
}

data = requests.get(
    url,
    params=params,
)

df = pd.read_csv(StringIO(data.text), sep=";")
  1. Parametry outputFormat a outputFormatEncoding budou součástí každého našeho requestu.
library(httr)
library(readr)

url <- "https://ws.ujep.cz/ws/services/rest2/predmety/getPredmetInfo"

params <- list(
    katedra = "KMA",
    zkratka = "MA2",
    rok = "2023",
    lang = "cs",
    outputFormat = "CSV", # (1)!
    outputFormatEncoding = "utf-8"
)

data <- GET(
    url,
    query = params
)

df <- read_csv2(rawToChar(data$content))
  1. Parametry outputFormat a outputFormatEncoding budou součástí každého našeho requestu.
Encoding

Soubory ve formátu CSV webové služby defaultně vrací v kódování windows-1250. Pro správné načtení dat je potřeba přidat parametr outputFormatEncoding=utf-8. Dokumentace