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

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

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

Рађено у четвртом кварталу 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# програмски језик (programiranje.co.rs): десктоп апликација за Windows.
  • Аутоматизација прегледача: вођење веб верзије порука кроз кораке које би корисник прошао руком.
  • Excel табела: улаз порука и евиденција послатог.

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

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


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

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

Проблем

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

Решење

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

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

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

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

Резултат

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


Роботи за прегледач 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

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

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

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