Automatizacija pregledača i web scraping – reference

Ovo su reference iz mog portfelja — rešenja rađena za konkretne klijente — u kojima program radi ono što bi čovek radio u pregledaču: prijavljuje se na sajtove, prolazi kroz njihove korake, popunjava obrasce, šalje poruke i skuplja podatke sa stranica. Nije bitno da li podaci dolaze iz Excel tabele, Word dokumenta ili poslovnog sistema, niti gde završavaju; zajedničko im je to da rade sa tuđim veb aplikacijama koje nemaju API i koje se mogu promeniti bez najave. Ovakve poslove radim u okviru usluge izrade Windows programa i servisnih aplikacija, a kada se rešenje oslanja na Office, i izrade Office dodataka.

Robot koji popunjava veb formulare, vođen iz poslovnog sistema

Rađeno u četvrtom kvartalu 2025.

Šta je urađeno

Windows program koji radi u pozadini i umesto operatera upravlja pregledačem: otvara zadate sajtove, prolazi kroz njihove korake i popunjava obrasce podacima koji već postoje u CacaTajka poslovnom sistemu. Ishod svakog prolaza vraća nazad u sistem, pa evidencija u svakom trenutku pokazuje dokle se stiglo.

Ono što ga izdvaja nije to što ume da klikne po stranici — to ume svaki alat za automatizaciju — nego gde mu stoji postupak. Koraci nisu napisani u programu, nego se vode kao podaci u poslovnom sistemu, u običnim tabelama koje se uređuju u pregledaču.

Zašto je postupak podatak, a ne kod

Tuđi sajtovi se menjaju bez najave: premesti se polje, doda se korak, promeni se tekst na dugmetu. Kod klasičnog robota svaka takva sitnica znači izmenu programa, novu verziju i novu instalaciju kod klijenta.

Ovde se u tom slučaju menja jedan red u tabeli. I sam način na koji se polje pronalazi na stranici stoji u tabeli, zajedno sa vrednošću koja se u njega upisuje, pa se izmena sajta rešava ispravkom podatka. Program ostaje isti. Isto važi i za uvođenje novog sajta ili nove vrste posla — dodaje se novi postupak, a ne novi program.

Svaki korak nosi i uslov pod kojim se izvršava, pa jedan postupak pokriva i slučajeve koji se granaju, bez pisanja posebne varijante za svaki. Korak može da nosi i oznaku od koje verzije programa važi, pa se izmene pripremaju unapred i ne remete rad instalacija koje još nisu ažurirane.

Šta klijent dobija

  • Posao koji se odvija bez čoveka – zadaci se obrađuju u ciklusima, sami od sebe, i noću.
  • Izmenu bez programera – kada se sajt promeni, ovlašćeni korisnik ispravi korak u tabeli i rad se nastavlja.
  • Jedan sistem umesto tri – prijem podataka, evidencija i obrada su povezani; ništa se ne prekucava.
  • Trag o svakom prolazu – snimci ekrana, dnevnik rada i zapis o tome šta je i kada promenjeno.
  • Više programa na više računara – svaka instalacija preuzima samo vrstu posla koja joj je dodeljena, pa se opterećenje deli.

Kada nešto pođe naopako

Automatizacija koja radi sa tuđim sajtom povremeno naiđe na nešto što nije predviđeno. Zato program nije pravljen tako da se u tom slučaju samo zaustavi.

Operater ima kontrole za pokretanje, pauzu i zaustavljanje, može da bude pozvan da ručno dopuni ono što nedostaje pa da nastavi od istog mesta, a ponašanje kod greške se bira: prekid, pauza radi provere, ili nastavak uz upis u dnevnik. Kod svake sumnjive tačke ostaje snimak ekrana, tako da se posle može videti šta je sajt tačno prikazao.

Gde je granica

Program ne odlučuje umesto čoveka i ne zaobilazi zaštite sajtova sa kojima radi — radi ono što bi operater i sam radio, samo bez prekucavanja i bez čekanja. Provere koje traže ljudsku procenu ostaju kod operatera, a program mu ih iznosi umesto da ih preskoči.

Gde se ovakvo rešenje koristi

Svuda gde se svakodnevno popunjava isti tuđi obrazac podacima koji već postoje u nekoj evidenciji: prijave i zahtevi na portalima koji nemaju svoj API, upiti u registre, provere statusa, prenos naloga iz jednog sistema u drugi.

Zato je ovo i najjasniji primer čemu CacaTajka služi: sistem drži podatke, pravila i evidenciju, a program koji se instalira je samo ruka koja to izvršava.

U kojim tehnologijama postoji

U upotrebi je varijanta pisana u VB.NET-u, koja je i isporučena klijentu.

Razrađena je i varijanta u C#-u. Pošto sav postupak stoji u tabelama poslovnog sistema, obe varijante rade po istim podacima — bira se ona koja se bolje uklapa u ono što klijent već koristi i održava.

U planu je verzija kao Electron aplikacija u JavaScript-u, koja isti posao radi i van Windowsa. Podela na sistem koji drži postupak i program koji ga izvršava upravo to i omogućava: menja se izvršilac, a ne pravila po kojima radi.

Korišćene tehnologije

Program je razvijen u VB.NET-u i C#-u, sa WinForms korisničkim okruženjem, upravlja pregledačem Microsoft Edge preko Selenium WebDriver-a, a sa poslovnim sistemom razgovara preko REST API-ja. Poslovni sistem je PHP i MySQL, sa Tabulator.js tabelama za uređivanje postupaka. Isporučuje se sa Windows instalacijom, a u pripremi je i Electron verzija u TypeScript-u.


Slanje SMS poruka upravljanjem tuđom veb aplikacijom

Rađeno u trećem kvartalu 2024.

Desktop aplikacija koja upravlja pretraživačem umesto korisnika

Ovo je referenca — rešenje napravljeno za jednog klijenta i opisano onako kako je nastalo. Ako vam treba gotova aplikacija za slanje SMS poruka iz Excel-a, ona postoji kao poseban proizvod: slanje SMS poruka iz Excela.

Zadatak

Klijent je imao posao koji se svakog meseca ponavljao: nekoliko stotina poruka iz tabele treba poslati pojedinačno, sa evidencijom šta je poslato. Servis koji šalje SMS preko interneta nije bio rešenje — poruke su morale da idu sa njihovog broja, sa njihovog telefona i preko njihovog pretplatničkog paketa.

To ostavlja samo jedan put: aplikaciju koja radi ono što bi čovek radio rukom, u pretraživaču, ali bez čoveka.

Zašto je to teže nego što izgleda

Program koji upravlja tuđom veb aplikacijom nema ugovor sa njom. Nema API koji garantuje da će sutra raditi isto, nema poruku o grešci na koju se može računati, nema obećanje da će polje za unos teksta i dugme za slanje ostati tamo gde su danas. Sve što takav program ima jeste ekran, isti onaj koji vidi i korisnik.

Iz toga slede tri problema koja čine posao:

  • Čekanje. Veb aplikacija se ne javlja kada je spremna. Program koji krene prerano kucaće u polje koje još ne postoji, a program koji čeka fiksnih pet sekundi po poruci potroši pola sata na spisak koji traje deset minuta.
  • Prekid u pola posla. Ako se veza izgubi na sto pedesetoj poruci, ne sme se ni prekinuti ceo posao ni početi iz početka. Zato evidencija o poslatom ne stoji u memoriji programa nego u samoj tabeli, red po red, u trenutku slanja — pa ponovno pokretanje nastavlja tamo gde je stalo.
  • Uparivanje uređaja. Veb verzija poruka radi samo dok je telefon uparen sa računarom, a to uparivanje traži čoveka. Zato je taj jedan korak svesno ostavljen korisniku, a sve ostalo ide bez njega.

Kako je rešeno

Desktop aplikacija za Windows koja vodi pretraživač kroz korake koje bi korisnik prošao rukom, a tabelu koristi i kao ulaz i kao evidenciju. Sve što se u tuđoj veb aplikaciji može promeniti — nazivi polja, dugmadi, vremena čekanja — izmešteno je iz programa u podešavanja, pa promena na njihovoj strani znači izmenu jedne postavke, a ne novu verziju programa.

Pre prvog slanja aplikacija proverava da li je okruženje spremno i, ako nije, kaže šta nedostaje — jer greška prijavljena pre početka vredi mnogo više od greške u sto pedesetom redu.

Korišćene tehnologije

  • C# programski jezik (programiranje.co.rs): desktop aplikacija za Windows.
  • Automatizacija pregledača: vođenje veb verzije poruka kroz korake koje bi korisnik prošao rukom.
  • Excel tabela: ulaz poruka i evidencija poslatog.

Šta je klijent dobio

Posao koji je trajao radno popodne sada traje onoliko koliko traje samo slanje, a evidencija o tome šta je poslato i kada nastaje sama, kao deo posla, umesto da se vodi posle njega. Rešenje je u međuvremenu doterano u gotov proizvod, koji se kupuje na strani slanje SMS poruka iz Excela.


Izvlačenje podataka sa veb stranice u Word dokument

Rađeno u četvrtom kvartalu 2021.

Problem

Klijentu je trebala VB skripta ugrađena u Word dokument, koja sa zadate veb stranice preuzima različite podatke i upisuje ih u određena polja dokumenta. Koji se deo stranice uzima, trebalo je da određuju početna i završna HTML oznaka između kojih se podatak nalazi. Posao je zamišljen kao relativno jednostavan, ali je zahtev da skripta radi i kao dodatak povećao njegov obim i složenost.

Rešenje

Napravljena je skripta koja izvlači sadržaj sa veba i sama popunjava Word dokument:

  • dinamičko izvlačenje podataka: skripta preuzima bilo koji tekst smešten između zadatih početnih i završnih HTML oznaka;
  • izvlačenje na osnovu URL-a: postupak počinje zadavanjem adrese veb stranice;
  • direktno upisivanje u Word: preuzeti podaci postavljaju se u predviđena polja dokumenta;
  • varijanta kao dodatak: skripta je proširena tako da radi i kao dodatak u Word okruženju.

Korišćene tehnologije

  • VB skripta: automatizacija zadataka unutar Microsoft Office paketa.
  • HTML: oznake koje određuju šta se izvlači sa stranice.
  • Microsoft Word: dokument u koji se podaci upisuju.

Rezultat

Podaci sa veb stranice stižu u Word dokument sami, bez kopiranja, a promenom oznaka ista skripta preuzima i druge delove stranice.


Roboti za pregledač Edge, vođeni iz Excel-a

Rađeno u trećem kvartalu 2021.

Problem

Klijent je već imao sistem za robotsku automatizaciju u pregledaču, kome su trebale značajne dorade prvog robota i potpuno novi, drugi robot. Automatizacijom je trebalo upravljati direktno iz Excel dodatka, uz mogućnost da se brzina rada i pauze između zadataka menjaju u toku rada. Najveći izazov bio je da se podaci iz Excel-a pouzdano izvuku i proslede kroz obrasce sajta za podnošenje zahteva. Pošto baza klijenta nije bila dostupna za testiranje, robote je trebalo proveriti bez pristupa pravom sistemu.

Rešenje

  • unapređen prvi robot: dorađen prema zadatim uputstvima, sa dodatnim mogućnostima;
  • novi, drugi robot: razvijen sa sopstvenim funkcijama, tako da radi zajedno sa prvim;
  • upravljanje iz Excel-a: podaci iz tabele automatski se izvlače i koriste za popunjavanje obrazaca na sajtu;
  • podešavanje u toku rada: ikonica zupčanika menja brzinu izvođenja i pauze između zadataka u realnom vremenu;
  • testno okruženje: napravljena je privremena stranica koja oponaša pravu platformu, kako bi se roboti verno proverili.

Korišćene tehnologije

  • VB.NET programski jezik: osnova robotske automatizacije.
  • Selenium: upravljanje pregledačem Edge.
  • Microsoft Excel: glavni izvor podataka za robote.

Rezultat

Klijent upravlja sa dva robota iz Excel-a, podešava im tempo bez prekidanja rada, a oba su provereni u okruženju koje verno prati pravi sajt.


VSTO dodatak koji automatizuje rad na sajtovima

Rađeno u trećem kvartalu 2021.

Problem

Klijent je imao niz koraka na vebu koje je trebalo automatizovati: prijavu na sajt, obradu HTML tabela, klikove na dugmad, preuzimanje Excel datoteka, prelazak na drugi sajt i popunjavanje i slanje obrazaca. Tražio je VSTO dodatak u VB.NET-u koji taj posao obavlja umesto njega.

Rešenje

Napravljen je dodatak koji pojednostavljuje procese na vebu i smanjuje ručni rad:

  • automatizacija rada na sajtovima: prijava, obrada podataka iz tabela, preuzimanje datoteka i popunjavanje obrazaca;
  • upravljanje elementima stranice: popunjavanje podataka i slanje obrazaca na ciljnim sajtovima;
  • dodatak u Office okruženju, tako da se posao pokreće iz aplikacije koju korisnik već koristi.

Korišćene tehnologije

  • VSTO (Visual Studio Tools for Office): okvir za izradu dodatka u Microsoft Office okruženju.
  • VB.NET: jezik u kome je dodatak napisan.
  • Selenium: upravljanje elementima stranica na ciljnim sajtovima.

Rezultat

Niz koraka na više sajtova, od prijave do slanja obrasca, pokreće se iz Office-a i odvija bez ručnog klikanja.


Strugač podataka sa dva nivoa stranica

Rađeno u trećem kvartalu 2021.

Problem

Klijentu je bio potreban strugač koji iz pretraživača na jednom sajtu izdvaja podatke o firmama. Strugač je trebalo da prođe kroz pretragu sajta, zada parametre koje korisnik odredi — polaznu lokaciju, odredišnu lokaciju i grad — i skupi listu rezultata, a zatim da uđe u stranicu svake firme i preuzme kontakt podatke i ostale informacije.

Rešenje

Napravljen je precizan i efikasan strugač koji podatke skuplja sa dva nivoa stranica:

  • dva nivoa stranica: podaci se izdvajaju i sa stranice rezultata pretrage i sa pojedinačnih stranica detalja;
  • parametri pretrage: korisnik zadaje lokacije i grad i dobija odgovarajuću listu;
  • detaljni podaci: pored liste, strugač ulazi u svaki link i preuzima kontakt i ostale podatke;
  • izvoz: svi podaci se slažu u pregledne Excel i CSV fajlove, spremne za analizu.

Korišćene tehnologije

  • Alati za veb struganje: tačno izdvajanje podataka sa stranica.
  • Excel i CSV: formati u koje se podaci izvoze.

Rezultat

Klijent za zadatu pretragu dobija kompletnu tabelu firmi sa kontakt podacima, bez ručnog otvaranja stranica, a posao je završen na vreme.

Utisak klijenta

★★★★★5/5

“Dejan je bio sjajan. Završio je sve zadatke na vreme i bio je veoma strpljiv i temeljit u komunikaciji i dokumentaciji. Hvala ti, Dejane!”

Treba vam slična automatizacija?

Šta ulazi u izradu, kako se određuje cena i kako izgleda tok posla, piše na stranici izrada Windows programa i servisnih aplikacija, a za povezivanje sa tuđim sistemima koji imaju API na stranici API integracije. Gotovu aplikaciju za slanje poruka pogledajte na strani slanje SMS poruka iz Excela, a ostale reference među Windows programima za automatizaciju.