Ako sme vyriešili justice.cz API?

Andrej Antaš
UOL Devs
Published in
2 min readFeb 5, 2017

Určite ste zažili situáciu, keď potrebujete informáciu, viete, kde ju vyhľadať, ale je to proste zdĺhavé preklikávanie. Samozrejme máte vyhraté, ak je vo firme niekto technicky zdatný, kto vám pomôže. V tom pripade zájdete na “dev” a vysvetlíte, čo obnáša informáciu X získať a vývojár vám život uľahčí automatizáciou tohto procesu.

A tu prichádzam do obrazu napríklad ja v Účetníctví on-line, alebo niektorí z mojich kolegov.

Prvý inštinkt vývojára je nájsť si API dokumentáciu a následne skriptom danú informáciu vsunúť do požadovaného procesu a je to. Všetci sa usmievame a môžeme ísť spokojní domov.

Nie tak rýchlo. Tentokrát sme stretli silného nepriateľa na fronte získavania verejne dostupných informácií o podnikateľských subjektoch. Hovorím o https://or.justice.cz/ias/ui/rejstrik. Pri každodennej práci je jeden z údajov, ktoré o zákazníkovi evidujeme, aj “Spisová značka”, ktorú pri firmách zistíme iba z justice. Čo čert nechcel, justice nemá žiadne API. Nebudeme sa tým asi moc zaoberať, väčšiu polemiku na túto tému vyvolali páni napr. tu:

http://blog.aktualne.cz/blogy/michal-skop.php?itemid=15872

Viac menej, mali sme pred sebou problém, ktorý bolo treba rozumným spôsobom vyriešiť. Inšpiráciu sme našli u Tomáša Dvořáka (https://www.tomas-dvorak.cz/posts/nacitani-dat-z-obchodniho-rejstriku-justicecz/), ktorý skonštatoval presne to, čoho sme sa báli. Budeme musieť prechádzať HTML stránky a parsovať z nej dané informácie.

Žiaden problém, náš stack je postavený na Ruby on Rails a nie je nič, na čo by sme nenašli gem alebo nedokázali jeden vytvoriť. Po krátkom hľadaní samozrejme na justici nič také neexistovalo, takže sme si vyhrnuli rukávy a začali.

S najmenším možným množtvom závislostí je riešenie takéto…

Na stiahnutie HTML danej stránky, na ktorú sa pýtame, je použitý faraday (https://github.com/lostisland/faraday), ktorý nám na niekoľkých riadkoch poskytne textový výstup stránky a následne nám nokogiri (https://github.com/sparklemotion/nokogiri) pomôže zo stránky vysekať potrebné informácie.

Mysleli sme aj na to, že nie pre každého je zaujímavý údaj, ktorý sme hľadali my, takže gem, ktorý sme v procese vytvorili, mení odpoveď justice do nám známeho objektového sveta.

Gem môžete nájsť tu:

https://github.com/redrick/justicecz

--

--

Andrej Antaš
UOL Devs

Ruby on Rails Developer living in Prague spending most of my time in @uolcz also Lego builder and coffee drinker…but still a grown man in a small world