Mă interesează să descarc în format digital o listă cu toate firmele din Romania și datele aferente cum se pot gasi pe multe site-uri de profil.
Cunoaște cineva cum se procedează?
Nu mă deranjează sa plătesc, ideea e că aș vrea o sursă oficială. Am căutat pe net dar nu am găsit vreo soluție. O să merg la Camera de Comerț să întreb, dar pâna atunci am zis sa pun o întrebare.
Iti spun din experienta ca e groaznic sa parsezi mfinante.
Programatic cu ceva gen PHP nu o sa poti pentru ca toata pagina este generata din javascript. Am incercat sa traduc algoritmii de securitate dar nu am avut prea mult succes.
Am facut la un moment dat o aplicatie in c# cu un webbrowser element sa parsez direct ce se genera si dupa vreo 10-15 verificari cu tot cu delay random eram banat.
Ai putea incerca cu proxy-uri dar nu prea pare o solutie.
Depinde foarte mult de ce date mai ai nevoie. Daca ai nevoie de cifra de afaceri, numar de salariati si profit/pierdere ai putea face o cerere la ONRC. Lucrez acum cu cineva care a facut o cerere sa obtina aceste date (am vazut raspunsul in scris de la ONRC) dar probabil depinde cine esti si ce faci cu baza de date.
Daca vrei datele financiare complete (bilanturile) nu prea ai cum legal
Daca vrei iti pot da un sql cu toate codurile caen din Romania si descrierile lor.
mi se pare culmea ca aia de la mfinante consuma resurse sa te descopere si baneze daca faci scraping la niste date publice, in loc sa ofere un API simplu pe care il pot controla.
Mi-se pare ciudat ca datele unei institutii publice (ie. finantate din taxe) sa nu fie disponibile decat daca platim din nou la diferite companii. Aceast fir de discutii m-a motivat sa reiau lucrul la o idee mai veche pe care aveam. Rezultatul:
Momentan import datele de pe ONRC si urmeaza sa scriu un crawler pentru mfinante si sa populez si cu datele de acolo. Intentionez sa fac tot codul open-source si toate datele culese accesibile gratuit. Revin cu update-uri cand exista.
FYI, importarea datelor de la ONRC aproape ca s-a terminat. Datele de pe mfinante sunt total alta chestie:
par sa foloseasca ceva criptare pe javascript (deci trebuie sa descarci pagina cu un browser care stie JS - nu curl/wget/etc)
ar merge cu selenium + browser real (chiar daca ar dura cateva luni), dar baneaza foarte agresiv orice sursa de request-uri automate (ie. momentan IP-ul meu este banat pentru ca am folosit selenium + Chrome pentru ~10 request-uri automate)
O solutie ar fi folosirea pe rand a mai multor calculatoare ca si proxy, dar acesta nu mai este un lucru chiar asa de simplu sau ieftin…
Cei cu care lucrez eu au cont la onrc unde poti baga credit si interoga certificate constatatoare. Parca e 8 lei pe constatator, nu sunt foarte sigur.
Exista un api nedocumentat si neoficial prin care poti face aceste interogari. De asemenea se pot face interogari de baza (nume firma, cui, localitate, judet, stare firma, ultima modificare) care sunt gratuite.
In acelasi portal de la onrc mai poti cauta buletine de insolventa. Eu am un parser care pur si simplu intra pe site ca un user normal si cauta buletinele de insolventa in functie de cui-ul firmei doar ca exista un captcha care apare din cand in cand.
Solutia gasita a fost sa creez mai multe conturi gratuite, sa trimit notificari cand dau de captcha ca sa intru manual pe site sa le completez iar parserul sa incerce alte conturi sa ia informatia. Odata ce introduci captcha-ul manual acesta nu mai apare un numar de inregistrari.
Toata treaba ai facut-o intr-un intr-un script simplu script de la 0, fara nici un mvc?
Te intreb asta pentru ca am facut ceva chiar aseamantor doar ca preluam datele de pe un site care nu era in limba Romana…
Eu am folosit pentru acest restfull api : Laravel ca si mvc, pachete am folosit Guzzle (pentru a prelua datele din site-ul extern, mi se ofera de catre site-ul respectiv un url ce imi returna in format json toate datele firmei…), Carbon.
Pentru mine un incepator mi s-a parut o marere de cap sa fiu sincer dar daca ai vrun model, sau faci vrun repositori pe github sa imi spui si mie te rog.
Pentru constatatoare e api SOAP. Pentru insolventa am folosit Goutte pentru a ma plimba prin site.
Da, am folosit un MVC ca toate fac parte dintr-o platforma. Am folosit Laravel.
Momentan nu ma gandesc sa le fac publice, poate mai incolo cand o sa am putin timp sa fac ceva scos din contextul aplicatiei.
Daca ajuta pe cineva, API-ul onrc e urmatorul: https://portal.onrc.ro/ONRCPortalWeb/wservices/QueryService/?wsdl
Trebuie sa trimiteti “username” si “password” la fiecare request.
Functiile gratuite pentru a cauta informatii sunt cele care incep cu “searchCompaniesBy” gen “searchCompaniesByFiscalCode”.
Ce primesti:
Se pot primi mai multe firme pe raspuns pentru ca pot exista firme care sunt radiate si au avut acelasi CUI.
Campul recomId este unic si cand gasiti firma pe care o doriti, folositi acel id pentru constatator sau alte interogari.
Campul status trebuie impartit la fiecare 4 caractere. Valoarea “10571083” inseamna ca are 2 statusuri 1057 si 1083.
Statusurile le gasiti pe data.gov.ro, la ONRC, intrati in ultimul document cu firme inregistrate si va exista un fisier “nomenclator stari firme”
1057 inseamna reorganizare judiciara si 1083 este sub incidenta legii nr. 85/2006
Sper ca ajuta pe cineva. Din pacate nu exista un manual pentru api-ul de la ONRC pentru ca daca ii intrebi pe ei iti spun ca nici nu au API-ul.
Modul cel mai bun ar fi sa obtinem direct de la MFP/ONRC. Momentan incerc sa aflu daca sunt legi / HG / OUG / directive EU pe baza carora putem sa cerem aceste date. Am contactat si responsabilul de la MFP pentru data.gov.ro dar momentan am primit doar un auto-reply cum-ca ar fi in concediu pana luni. Vedem dupa .
Daca aveti cunostinte la MFP / ONRC, by all means, va rog sa le contactati si sa intrebati ce posibilitati exista. De exemplu puteti sa vedeti pe linked-in cateva persoane care lucreaza acolo:
Foarte posibil sa existe argumente de genul “ar fi dificil sa va dam in formatul X” dar daca ajungem pana aici e deja super (chiar daca dau de exemplu backup-uri de MS SQL - cea ce ar trebui sa le fie super usor - putem sa scoatem datele de acolo). Sau la modul absurd - daca se ofera sa listeze toate datele pe hartie - exista scannere automate + OCR si digitizam din nou datele.
O alta posibilitate ar fi cum zice @Alexandru_Harabagiu - folosirea API-ului de le RisCo, dar costul e destul de mare si nu prea cred ca exista firma din domeniu (listafirme, etc) care sa dea datele fara conditii (ie. “faceti ce vreti cu ele”).
Apropo de RisCo, zic un lucru interesant pe site:
Datele privind actionariatul firmelor sunt preluate de la Oficiul National Registrul Comertului in baza unui contract comercial incheiat cu acesta.
Deci daca gasim cu cine sa facem contractul…
Revenind la posibilitati:
luat niste proxy-uri (se gasesc destul de ieftin)
scris un script care ruleaza un browser (poate chiar headless - gen PhantomJS) - trebuie browser complet ca sa treaca de “criptarea” javascript - care roteste proxy-urile si user agent-urile fi ia datele pas cu pas. Nu-i complicat deloc, undeva la ~100 de linii de python sa zicem. Exemplu: a.zip (610 Bytes)
rulat script-ul timp de 6-8 luni, rotit proxy-urile din cand in cand, etc
Dar chiar si asa se obtin doar datele dupa 2010 (inclusiv)