Dane z CEIDG - pobieranie z sewisu

0

Witam, potrzebuję pobrać na podstawie posiadanego nip-u resztę danych z bazy przedsiębiorców i zapisać je do bazy z którą współpracuje stworzona aplikacja.
Jest w sieci kilka schematów (ale w php oraz C#) sprzed paru lat.
Może ma ktoś jakieś aktualne przetestowane rozwiązanie na platformie Delphi?

1

Przecież tam zwykły json przychodzi, działasz jak z każdym innym api.

0
vudiemphuongchi napisał(a):

Witam, potrzebuję pobrać na podstawie posiadanego nip-u resztę danych z bazy przedsiębiorców i zapisać je do bazy

Uważaj, żebyś nie zapłacił milion kary ;)
https://mambiznes.pl/wlasny-biznes/milionowa-kara-rodo-dla-polskiej-firmy-91245

0

W tej chwili nie bd pisal Ci specjalnie kodu w delphi, ale na specjalne zyczenie moge Ci taki prywanie napisac(napisz pv). Ewentualnie polecam na szybko imacros(czesto sie nim wspomagam) z poleceniami !EXTRACT (pobranie danych z okreslonego znacznika), PROMPT (wprowadzanie/wyswietlanie danych). SAVEAS CSV Nie bede az tak dokladnie instruowal, imacros jest bardzo intuicyjny i byc moze cos takiego Ci wystarczy.

Inne rozwiaanie: wklej istniejacy kod w C ktory znalazles(lub wyslij prywatnie), byc moze ja lub ktorys z uzytkownikow przetlumaczy Ci na dlephi

1

tu masz pobieranie z GUSu, które kiedyś dodawałem Jak pobrać dane podmiotu gospodarczego z bazy GUS?

0

Ja mam pytanie troszkę poboczne, które repozytorium polecacie z największą ilością najbardziej aktualnych danych do programu fakturującego? GUS, CEIDG czy może coś innego?

0

@robertz68: obie mają tak samo aktualne dane i w obu przypadkach mogą być rozbieżności gdy zawiedzie przedsiębiorca i nie zgłosi wszystkiego przy zmianach w firmie.

1

Słyszałem jednak że te dwie bazy działają troszkę odmiennie i nie zawsze mają w pełni spójne dane

Zgadza się, z własnego doświadczenia mogę powiedzieć, że REGON ma bardziej dokładne informacje, także niektóre dane (np. dot. zwieszeń działalności) potrafią w nim figurować, ale nie będą widoczne w CEIDG. Zawsze jak podejmujemy jakieś "nieprzyjemne czynności" przy użyciu naszego prawnika, opiera się o dane z REGON i twierdzi, że tamta baza jest najsensowniejsza z tych ogólnie dostępnych.

Możesz też rzucić okiem na https://rejestr.io/, przy czym nie wiem, jak wygląda kwestia integracji tego serwisu ze swoją aplikacją, ja jedynie korzystałem z wersji przeglądarkowej, ale całkiem fajnie daje radę.

0

To przykladowy kod do poiberania danych z serwisu swiatdrukarek. Wczesniej pobralem caly serwis wget -m <nazwaserwisu> w formie plikow html i program wyodrebnial poszczegolne dane. Funkcja ereg jest dostepna gdzies tutaj w serwisie(wycina tekst pomiedzy 2 slowami). Byc moze przyda Ci sie to do czegos.

procedure TForm1.Button1Click(Sender: TObject);
var
  tempstring, tempstring02, tempstring03: string;
  i: integer;
begin

  if not wlaczony then wlaczony := true else wlaczony := false;
  for i := 0 to lbListaPlikow.Items.Count -1 do
  begin
  application.processmessages;
  if not wlaczony then exit;
  form1.caption := inttostr(i);
  memo1.Lines.LoadFromFile(lbListaPlikow.Items[i]);
  memo1.Lines.Text := stringreplace(memo1.Lines.Text, #10, '', [rfReplaceAll]);
  memo1.Lines.Text := stringreplace(memo1.Lines.Text, #13, '', [rfReplaceAll]);

  tempstring := ereg(memo1.lines.text, 'class=v12szb>|</span>'); //symbol
  tempstring := tempstring+';'+ereg(memo1.lines.text, '<span class=nag>|</span>'); //nazwa
  tempstring := tempstring+';'+ereg(memo1.lines.text, '<td><a href="/wydajnosc.html">|</a>'); //wydajnosc
    //tempstring := tempstring+';'+ereg(memo1.lines.text, '<td>wydajność</td>|</td>'); //wydajnosc

  // ZAM-C6B
  tempstring := tempstring+';'+ereg(tempstring, '<tr bgcolor="|">'); //kolor
  tempstring := tempstring+';'+ereg(memo1.lines.text, 'class="v12szb">| netto</span'); //cena netto
  tempstring := stringreplace(tempstring, #13, '', [rfReplaceAll]);
  tempstring := stringreplace(tempstring, #10, '', [rfReplaceAll]);
  tempstring := tempstring+';';


  tempstring02 := ereg(memo1.lines.text, 'Kompatybilne drukarki|Dodatkowe informacje');
  repeat
    tempstring03 := ereg(tempstring02, '.html">|</a>');
    tempstring := tempstring + tempstring03+',';
    tempstring02 := stringreplace(tempstring02, '.html">'+tempstring03+'</a>', '', [rfReplaceAll]);
  until pos('.html"', tempstring02) <= 0;

  memo2.Lines.Add(tempstring);
  end;
  memo2.Lines.SaveToFile('c:\examplecsv.csv');
  close;
0

@bronex przecież ceidg i gus udostępniają normalne rest api na jsonie, więc na co to to tutaj? O.o

0

na wypadek jesli kiedys zmienia zdanie i zaprzestana udostepniania lub jesli ich api sie im popsuje ;] a na serio na chwile obecna jako alternatywna/universlna metoda, takze do innych serwisow - osobiscie jestem przeciwnikiem korzystania z tych gaddzetow "api".moze sie to kmus przyda

1
bronex napisał(a):

[…] osobiscie jestem przeciwnikiem korzystania z tych gaddzetow "api".

Mam nadzieję że żartujesz. Jeśli serwis wystawia API to właśnie po to, aby nie tracić czas wymyślając koło na nowo. API to jedyny sensowny sposób pozyskiwania danych, nie żaden gadżet.

Jeśli serwis nie posiada API to inna sprawa – wtedy można się skusić na dedykowane rozwiązania.

0
bronex napisał(a):

na wypadek jesli kiedys zmienia zdanie i zaprzestana udostepniania lub jesli ich api sie im popsuje ;] a na serio na chwile obecna jako alternatywna/universlna metoda, takze do innych serwisow - osobiscie jestem przeciwnikiem korzystania z tych gaddzetow "api".moze sie to kmus przyda

Wiesz... prędzej zmienią htmla i cały twój czas poświęcony na parsera szlak trafi, niż api zniknie. Zresztą często się robi blokady na dużo pobieranie treści html, właśnie by zablokować takie parsery. Po to jest zoptymalizowane wystawione api.

0

Coz, kazdy ma swoje poglady na zycie. byc moze mam troche odmienne/niekonwencjonalne poglady na zycie i wiecznie moge sie spotkac z krytyka - nie zartowalem sobie(poniekad)

Prawde mowiac... nigdy nie stosowalem zadnego Api, w czasach gdy zaczynalem nauke programowania sieciowego(2002/2003r) - nie bylo czegos takiego(bynajmniej nie kojarze w ogóle), stad myslac po sobie - ja teraz musze tracic czas na nauke czegos nowego "api" ;] - to po pierwsze, po drugie musze czytac dokumentacje serwisu - czego mi sie po prostu robic niechce, a moze nawet instalowac jakies dodatkowe biblioteki/wtyczki/pluginy - stad - "w moim" mniemaniu(nie urazajac nikogo oczywiscie - to tylko moje zdanie) jest to o wiele wiecej czasu + uzaleznianie sie od dodatkowych zbednych gadzetow - tak nie zartowalem sobie.

Powiadaja kazdy sposobj jest dobry jesli Ci tylko sluzy(najlepiej rowniez innym), jednakze osobiscie uwazam najlepsze sa stare sprawdzone sposoby ;]

W tym wypadku faktycznie, predzej zmienia calego htmla, skoro owy serwis udostepnia api! to prawda

Co do blogkad na takie parsery zgadza sie - piszac kiedys program do wydobywania nr x OLX mialem juz taki problem. Serwis blokowal, dla jednego pc musialem po prostu zwolnic tempo - w sumie wystarczylo, nawet capcha nie pojawialo sie(choc to juz bylo w oparciu o stary TWebBrowser). Nie sprawadzalem oczywiscie czy olx ma jakies api - nie wydaje mi sie.

A moze zwykly spammer ze mnie, zaden altruista niosacy chcec pomocy innym, ktory proboje zaimponowac i zyskac pare pkt reputacji ;]

2

@bronex: na moich stronach byś nigdy nic nie wyciągnął z htmla, chyba, ze byś sobie wywoływał js po stronie backendu - powodzenia w zabawie :D

Biblioteki do api? a po co ci, przecież robisz zwykły request.
Nauka? Czego? Decodowania jsona?
Tracenie czasu na dokumentacje? A to prościej tracić czas na szukanie odpowiedniego klucza by dobrać się do tekstu zamiast odczytać informacje z porządnej dokumentacji?
Oczywiście że w 2003 roku istniało publiczne api, tylko, że wtedy nie było to takie proste jak dziś, nie było na jsonie tylko na xml SOAP API, które powstało w latach 90-tych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1