Аутоматизација прегледача и web scraping – референце

Примери аутоматизације прегледача у овом портфељу обухватају решења у којима програм ради оно што би човек радио у прегледачу: пријављује се на сајтове, пролази кроз њихове кораке, попуњава обрасце, шаље поруке и скупља податке са страница. Није битно да ли подаци долазе из Excel табеле, Word документа или пословног система, нити где завршавају; заједничко им је то да раде са туђим веб апликацијама које немају API и које се могу променити без најаве. Многи од њих су и web scraping пројекти: прикупљање података са страница које нису прављене да их чита програм.

Овакве послове радим у оквиру услуге израде Windows програма и сервисних апликација, а када се решење ослања на Office, и израде Office додатака.

Програм који сам преузима документе са портала без API-ја

Рађено од првог до трећег квартала 2026.

Шта је урађено

Клијент је документе са једног портала свакодневно преузимао ручно: пријава сертификатом, претрага, извоз сваког документа у PDF и пренос у сопствени систем. Портал нема API, а његов изворни код није доступан, па је једини пут био онај којим иде и човек – кроз прегледач.

Направио сам Windows програм који тај посао ради сам, у позадини, из иконице поред сата: пријављује се, пролази кроз портал, извози документе у PDF и шаље их у систем клијента, без отвореног прозора прегледача и без ичијег клика.

Рачунар до кога не можемо да дођемо

Програм ради на рачунару клијента, пред којим нико од нас никада није седео. Није било могуће пробати нешто „на брзину“, погледати екран или поновити грешку на лицу места. Зато је програм од првог дана направљен тако да се инсталира без наше помоћи, да сам јави шта је радио и шта је видео, и да се његово понашање може мењати на даљину – без одласка до рачунара и без поновне инсталације.

Пријава сертификатом, без корисника

Портал не пушта никога без клијентског сертификата, а прегледач у том тренутку тражи да човек изабере сертификат и потврди пријаву. За програм који ради сам то је зид. Решено је тако да се одговарајући сертификат бира сам и да се пријава завршава без иједног клика.

Ажурирања која нико не примећује

Код корисника који свој посао ради на истом рачунару не сме да искочи прозор за инсталацију нити питање за администраторска права. И нове верзије програма и нова упутства за рад на порталу стижу и примењују се тихо, у позадини; корисник види само да је посао урађен.

Туђи портал, без изворног кода

Како се портал понаша, сазнаје се само испробавањем: пошаље се корак, погледа се шта је портал вратио, па се корак исправи и покуша поново – све док се не погоди. Зато поступак рада није записан у самом програму, него у упутствима која програм преузима. Сваки нови покушај стиже као ново упутство, без нове верзије програма, а током развоја програм је после сваког покушаја враћао снимак странице на којој се затекао.

Од AI агента до Selenium-а

Посао је почео са AI агентом у облаку, који је сам „читао“ портал и одлучивао куда даље, а затим са алатом који прегледачем управља уз помоћ AI-ја. Показало се да је портал довољно једноставан да му AI не треба: оно што се једном погоди ради исто сваки пут, брже, јефтиније и предвидљивије него када модел сваки пут изнова одлучује. Програм који ради код клијента зато користи Selenium, без AI-ја.

Шта клијент добија

  • Посао без човека – документи се преузимају по распореду или на захтев, у позадини.
  • Инсталацију једним кликом – без администраторских права и без подешавања.
  • Тиха ажурирања – и програма и поступка рада.
  • Измену на даљину – када се портал промени, исправља се упутство, а не програм.
  • Безбедну везу са сопственим системом – програм се пријављује налогом корисника, уз потврду кодом послатим е-поштом када је укључена двостепена пријава.
  • Траг о сваком пролазу – преглед активности и дневник рада.

Где је граница

Програм не заобилази заштиту портала: пријављује се сертификатом и налогом самог корисника и ради само оно што би корисник и сам радио.

Коришћене технологије

Програм је развијен у TypeScript-у на Node.js-у, као Electron апликација за Windows, управља прегледачем Microsoft Edge преко Selenium WebDriver-а, а испоручује се као инсталер једним кликом са аутоматским ажурирањем. У ранијим фазама коришћени су AI агент у облаку и Stagehand.

Повратне информације клијента

★★★★★5/5

“Сарадња са Дејаном била је одлична. Професионалан је, поуздан и врло стручан, и доследно испоручује квалитетан рад на време. Јасно комуницира, брзо реагује на примедбе и показује да добро разуме захтеве пројекта. Радо бих наставио да радим са њим и топло га препоручујем другим клијентима.”

Xiao Z.

Робот који попуњава веб формуларе, вођен из пословног система

Рађено у четвртом кварталу 2025.

Шта је урађено

Windows програм који ради у позадини и уместо оператера управља прегледачем: отвара задате сајтове, пролази кроз њихове кораке и попуњава обрасце подацима који већ постоје у ЦацаТајка пословном систему. Исход сваког пролаза враћа назад у систем, па евиденција у сваком тренутку показује докле се стигло.

Оно што га издваја није то што уме да кликне по страници — то уме сваки алат за аутоматизацију — него где му стоји поступак. Кораци нису написани у програму, него се воде као подаци у пословном систему, у обичним табелама које се уређују у прегледачу.

Зашто је поступак податак, а не код

Туђи сајтови се мењају без најаве: премести се поље, дода се корак, промени се текст на дугмету. Код класичног робота свака таква ситница значи измену програма, нову верзију и нову инсталацију код клијента.

Овде се у том случају мења један ред у табели. И сам начин на који се поље проналази на страници стоји у табели, заједно са вредношћу која се у њега уписује, па се измена сајта решава исправком податка. Програм остаје исти. Исто важи и за увођење новог сајта или нове врсте посла — додаје се нови поступак, а не нови програм.

Сваки корак носи и услов под којим се извршава, па један поступак покрива и случајеве који се гранају, без писања посебне варијанте за сваки. Корак може да носи и ознаку од које верзије програма важи, па се измене припремају унапред и не ремете рад инсталација које још нису ажуриране.

Шта клијент добија

  • Посао који се одвија без човека – задаци се обрађују у циклусима, сами од себе, и ноћу.
  • Измену без програмера – када се сајт промени, овлашћени корисник исправи корак у табели и рад се наставља.
  • Један систем уместо три – пријем података, евиденција и обрада су повезани; ништа се не прекуцава.
  • Траг о сваком пролазу – снимци екрана, дневник рада и запис о томе шта је и када промењено.
  • Више програма на више рачунара – свака инсталација преузима само врсту посла која јој је додељена, па се оптерећење дели.

Када нешто пође наопако

Аутоматизација која ради са туђим сајтом повремено наиђе на нешто што није предвиђено. Зато програм није прављен тако да се у том случају само заустави.

Оператер има контроле за покретање, паузу и заустављање, може да буде позван да ручно допуни оно што недостаје па да настави од истог места, а понашање код грешке се бира: прекид, пауза ради провере, или наставак уз упис у дневник. Код сваке сумњиве тачке остаје снимак екрана, тако да се после може видети шта је сајт тачно приказао.

Где је граница

Програм не одлучује уместо човека и не заобилази заштите сајтова са којима ради — ради оно што би оператер и сам радио, само без прекуцавања и без чекања. Провере које траже људску процену остају код оператера, а програм му их износи уместо да их прескочи.

Где се овакво решење користи

Свуда где се свакодневно попуњава исти туђи образац подацима који већ постоје у некој евиденцији: пријаве и захтеви на порталима који немају свој API, упити у регистре, провере статуса, пренос налога из једног система у други.

Зато је ово и најјаснији пример чему ЦацаТајка служи: систем држи податке, правила и евиденцију, а програм који се инсталира је само рука која то извршава.

У којим технологијама постоји

У употреби је варијанта писана у VB.NET-у, која је и испоручена клијенту.

Разрађена је и варијанта у C#-у. Пошто сав поступак стоји у табелама пословног система, обе варијанте раде по истим подацима — бира се она која се боље уклапа у оно што клијент већ користи и одржава.

У плану је верзија као Electron апликација у JavaScript-у, која исти посао ради и ван Windows-а. Подела на систем који држи поступак и програм који га извршава управо то и омогућава: мења се извршилац, а не правила по којима ради.

Коришћене технологије

Програм је развијен у VB.NET-у и C#-у, са WinForms корисничким окружењем, управља прегледачем Microsoft Edge преко Selenium WebDriver-а, а са пословним системом разговара преко REST API-ја. Пословни систем је PHP и MySQL, са Tabulator.js табелама за уређивање поступака. Испоручује се са Windows инсталацијом, а у припреми је и Electron верзија у TypeScript-у.


Слање SMS порука управљањем туђом веб апликацијом

Рађено у трећем кварталу 2024.

Десктоп апликација која управља претраживачем уместо корисника

Ово је референца — решење направљено за једног клијента и описано онако како је настало. Ако вам треба готова апликација за слање SMS порука из Excel-а, она постоји као посебан производ: слање SMS порука из Ексела.

Задатак

Клијент је имао посао који се сваког месеца понављао: неколико стотина порука из табеле треба послати појединачно, са евиденцијом шта је послато. Сервис који шаље SMS преко интернета није био решење — поруке су морале да иду са њиховог броја, са њиховог телефона и преко њиховог претплатничког пакета.

То оставља само један пут: апликацију која ради оно што би човек радио руком, у претраживачу, али без човека.

Зашто је то теже него што изгледа

Програм који управља туђом веб апликацијом нема уговор са њом. Нема API који гарантује да ће сутра радити исто, нема поруку о грешци на коју се може рачунати, нема обећање да ће поље за унос текста и дугме за слање остати тамо где су данас. Све што такав програм има јесте екран, исти онај који види и корисник.

Из тога следе три проблема која чине посао:

  • Чекање. Веб апликација се не јавља када је спремна. Програм који крене прерано куцаће у поље које још не постоји, а програм који чека фиксних пет секунди по поруци потроши пола сата на списак који траје десет минута.
  • Прекид у пола посла. Ако се веза изгуби на сто педесетој поруци, не сме се ни прекинути цео посао ни почети из почетка. Зато евиденција о послатом не стоји у меморији програма него у самој табели, ред по ред, у тренутку слања — па поновно покретање настави тамо где је стало.
  • Упаривање уређаја. Веб верзија порука ради само док је телефон упарен са рачунаром, а то упаривање тражи човека. Зато је тај један корак свесно остављен кориснику, а све остало иде без њега.

Како је решено

Десктоп апликација за Windows која води претраживач кроз кораке које би корисник прошао руком, а табелу користи и као улаз и као евиденцију. Све што се у туђој веб апликацији може променити — називи поља, дугмади, времена чекања — измештено је из програма у подешавања, па промена на њиховој страни значи измену једне поставке, а не нову верзију програма.

Пре првог слања апликација проверава да ли је окружење спремно и, ако није, каже шта недостаје — јер грешка пријављена пре почетка вреди много више од грешке у сто педесетом реду.

Коришћене технологије

  • C# програмски језик: десктоп апликација за Windows.
  • Аутоматизација прегледача: вођење веб верзије порука кроз кораке које би корисник прошао руком.
  • Excel табела: улаз порука и евиденција послатог.

Шта је клијент добио

Посао који је трајао радно поподне сада траје онолико колико траје само слање, а евиденција о томе шта је послато и када настаје сама, као део посла, уместо да се води после њега. Решење је у међувремену дотерано у готов производ, који се купује на страни слање SMS порука из Ексела.


Извлачење података са веб странице у Word документ

Рађено у четвртом кварталу 2021.

Проблем

Клијенту је требала VB скрипта уграђена у Word документ, која са задате веб странице преузима различите податке и уписује их у одређена поља документа. Који се део странице узима, требало је да одређују почетна и завршна HTML ознака између којих се податак налази. Посао је замишљен као релативно једноставан, али је захтев да скрипта ради и као додатак повећао његов обим и сложеност.

Решење

Направљена је скрипта која извлачи садржај са веба и сама попуњава Word документ:

  • динамичко извлачење података: скрипта преузима било који текст смештен између задатих почетних и завршних HTML ознака;
  • извлачење на основу URL-а: поступак почиње задавањем адресе веб странице;
  • директно уписивање у Word: преузети подаци постављају се у предвиђена поља документа;
  • варијанта као додатак: скрипта је проширена тако да ради и као додатак у Word окружењу.

Коришћене технологије

  • VB скрипта: аутоматизација задатака унутар Microsoft Office пакета.
  • HTML: ознаке које одређују шта се извлачи са странице.
  • Microsoft Word: документ у који се подаци уписују.

Резултат

Подаци са веб странице стижу у Word документ сами, без копирања, а променом ознака иста скрипта преузима и друге делове странице.


Стругачи и анализатори спортских резултата

Рађено у трећем кварталу 2021.

Проблем

Клијенту је требала статистика резултата за више спортова — фудбал, NBA кошарку и NHL хокеј — и то не само преглед утакмица, него и најдуже серије: на пример колико је утакмица заредом тим имао мање од 2,5 гола, или колико је утакмица заредом пало више од 59,5 поена у првој четвртини. За фудбал су били потребни подаци из тридесетак лига за последњих десет сезона, а за кошарку и хокеј за последњих пет, уз редовно освежавање текућих сезона.

Такви подаци не долазе преко API-ја. Налазе се на јавним сајтовима са резултатима, распоређени по лигама, сезонама и страницама, па је требало сакупити хиљаде утакмица, заједно са резултатима по полувременима, четвртинама и трећинама.

Решење

Уместо једног програма направљен је скуп Windows програма који заједно обављају посао, са посебним паром програма за сваки спорт:

  • стругачи резултата: програми који преко прегледача пролазе кроз странице са резултатима по лигама и сезонама и скупљају све утакмице у фајл са резултатима;
  • архива и текуће сезоне одвојено: исти стругач ради са два списка адреса — једним за архиву претходних сезона и другим за текуће — па се архива прикупи једном, а текуће сезоне освежавају по потреби;
  • прескакање обрађених страница: стругач може да прескочи адресе које већ постоје у резултатима, па се посао после прекида наставља без поновног скидања;
  • контролисано заустављање: дугме за заустављање сачека да се текућа страница заврши, па се рад може безбедно наставити касније;
  • анализатори: посебни програми који спајају архиву и текуће резултате и по задатим правилима рачунају најдуже серије за сваки тим и сваку лигу;
  • подесив праг: корисник задаје од колико утакмица се серија сматра рекордом, а резултати се приказују у самом програму;
  • упутство за коришћење: клијент је добио опис како се програми подешавају и којим редом се користе.

Коришћене технологије

  • C# програмски језик и .NET Framework: сви стругачи и анализатори.
  • Windows Forms: кориснички интерфејс програма.
  • Selenium WebDriver и Microsoft Edge: управљање прегледачем при прикупљању резултата.
  • Текстуални фајлови: спискови адреса, прикупљени резултати и правила за анализу.

Резултат

Клијент сам прикупља архиву и текуће резултате за три спорта и тридесетак фудбалских лига и једним покретањем анализатора добија најдуже серије по правилима која га занимају.


Роботи за прегледач Edge, вођени из Excel-а

Рађено у трећем кварталу 2021.

Проблем

Клијент је већ имао систем за роботску аутоматизацију у прегледачу, коме су требале значајне дораде првог робота и потпуно нови, други робот. Аутоматизацијом је требало управљати директно из Excel додатка, уз могућност да се брзина рада и паузе између задатака мењају у току рада. Највећи изазов био је да се подаци из Excel-а поуздано извуку и проследе кроз обрасце сајта за подношење захтева. Пошто база клијента није била доступна за тестирање, роботе је требало проверити без приступа правом систему.

Решење

  • унапређен први робот: дорађен према задатим упутствима, са додатним могућностима;
  • нови, други робот: развијен са сопственим функцијама, тако да ради заједно са првим;
  • управљање из Excel-а: подаци из табеле аутоматски се извлаче и користе за попуњавање образаца на сајту;
  • подешавање у току рада: иконица зупчаника мења брзину извођења и паузе између задатака у реалном времену;
  • тестно окружење: направљена је привремена страница која опонаша праву платформу, како би се роботи верно проверили.

Коришћене технологије

  • VB.NET програмски језик: основа роботске аутоматизације.
  • Selenium: управљање прегледачем Edge.
  • Microsoft Excel: главни извор података за роботе.

Резултат

Клијент управља са два робота из Excel-а, подешава им темпо без прекидања рада, а оба су проверена у окружењу које верно прати прави сајт.


VSTO додатак који аутоматизује рад на сајтовима

Рађено у трећем кварталу 2021.

Проблем

Клијент је имао низ корака на вебу које је требало аутоматизовати: пријаву на сајт, обраду HTML табела, кликове на дугмад, преузимање Excel датотека, прелазак на други сајт и попуњавање и слање образаца. Тражио је VSTO додатак у VB.NET-у који тај посао обавља уместо њега.

Решење

Направљен је додатак који поједностављује процесе на вебу и смањује ручни рад:

  • аутоматизација рада на сајтовима: пријава, обрада података из табела, преузимање датотека и попуњавање образаца;
  • управљање елементима странице: попуњавање података и слање образаца на циљним сајтовима;
  • додатак у Office окружењу, тако да се посао покреће из апликације коју корисник већ користи.

Коришћене технологије

  • VSTO (Visual Studio Tools for Office): оквир за израду додатка у Microsoft Office окружењу.
  • VB.NET: језик у коме је додатак написан.
  • Selenium: управљање елементима страница на циљним сајтовима.

Резултат

Низ корака на више сајтова, од пријаве до слања обрасца, покреће се из Office-а и одвија без ручног кликања.


Стругач података са два нивоа страница

Рађено у трећем кварталу 2021.

Проблем

Клијенту је био потребан стругач који из претраживача на једном сајту издваја податке о фирмама. Стругач је требало да прође кроз претрагу сајта, зада параметре које корисник одреди — полазну локацију, одредишну локацију и град — и скупи листу резултата, а затим да уђе у страницу сваке фирме и преузме контакт податке и остале информације.

Решење

Направљен је прецизан и ефикасан стругач који податке скупља са два нивоа страница:

  • два нивоа страница: подаци се издвајају и са странице резултата претраге и са појединачних страница детаља;
  • параметри претраге: корисник задаје локације и град и добија одговарајућу листу;
  • детаљни подаци: поред листе, стругач улази у сваки линк и преузима контакт и остале податке;
  • извоз: сви подаци се слажу у прегледне Excel и CSV фајлове, спремне за анализу.

Коришћене технологије

  • Алати за веб стругање: тачно издвајање података са страница.
  • Excel и CSV: формати у које се подаци извозе.

Резултат

Клијент за задату претрагу добија комплетну табелу фирми са контакт подацима, без ручног отварања страница, а посао је завршен на време.

Утисак клијента

★★★★★5/5

“Дејан је био сјајан. Завршио је све задатке на време и био је веома стрпљив и темељит у комуникацији и документацији. Хвала ти, Дејане!”

Feilian W.

Треба вам слична аутоматизација?

Шта улази у израду, како се одређује цена и како изгледа ток посла, пише на страници израда Windows програма и сервисних апликација, а за повезивање са туђим системима који имају API на страници API интеграције. Готову апликацију за слање порука погледајте на страни слање SMS порука из Ексела, а остале референце међу Windows програмима за аутоматизацију.