최근 꾸준한 칼럼 글쓰기를 위해서 제가 도전해 보고있는 것이 있습니다. 바로 미라클 칼럼 글쓰기입니다. 작심삼일이라고 오늘로써 벌써 일주일째 성공하고 있네요. 매일 5시쯤에 일어나서 업무 자동화와 관련된 칼럼 주제에 맞게 자료를 수집하고 원고의 초안을 조금씩 작성해서 완성해 보고 있습니다.
우리는 업무 자동화 기술 발전 핵심 아이디어 4가지 글에서 RDA, RPA, CPA, IPA에 대한 기초 개념을 이해했습니다. 이번 칼럼에서는 RDA를 이용한 업무 자동화에 대해서 조금 더 들여다보려고 합니다. 특히 많은 분들이 어려움을 겪고 있는 웹 사이트 데이터 수집 자동화에 대해서 정리해 보았습니다.
본 칼럼에서는 데스크톱 자동화(RDA) 기반 자동화 로봇 개발을 위한 기술적인 내용보다는 사용자 입장에서 겪는 문제를 식별하고 어떤 절차로 해결해 나가야하는지 초점을 맞추어 정리하였습니다. 추가로 다양한 사례들을 직업의 관점에서 정리해 보았습니다. 정리된 사례들을 통해 나 또는 우리에게 해당하는 문제인지 조금 더 직관적으로 판단하고 이해할 수 있을 것으로 기대합니다.
목 차
데스크톱 자동화(RDA) 란?
RDA(Robotic Desktop Automation)는 개인 또는 직원의 PC(Personal Computer) 환경에서 동작하는 특정 업무를 자동화할 목적으로 만들어진 응용 프로그램입니다. 즉, 개인 또는 직원이 겪고 있는 반복적인 업무의 어려움을 도와주기 위한 하나의 소프트웨어입니다. RDA 기반 봇의 기본 컨셉은 사람과 함께 상호작용하며 동작합니다. 사람이 봇에게 작업 명령을 주면 RDA 봇은 미리 정의된 명령대로만 수행할 수 있습니다.
그림. RDA 기반 비서형 로봇 컨셉
웹사이트 데이터 수집 봇(Bot)의 필요성
봇을 사용하면 웹사이트에서 데이터를 수동으로 수집하는 것보다 빠르고 정확하게 데이터를 수집할 수 있습니다. 데스크톱 자동화(RDA) 기반 웹사이트 데이터 수집 봇은 다음과 같은 경우에 필요합니다.
- 웹사이트에서 많은 양의 데이터를 수집해야 하는 경우
- 웹사이트에서 특정 형식의 데이터를 수집해야 하는 경우
- 웹사이트에서 데이터를 빠르게 수집해야 하는 경우
데스크톱 자동화(RDA) 기반 봇을 사용하면 웹사이트에서 데이터를 수집하는 데 사용되는 시간과 노력을 크게 줄일 수 있습니다.
웹사이트 데이터 수집 봇(Bot) 개발 절차
웹사이트 데이터 수집 봇을 개발할 때는 봇의 목적, 봇의 목표 기능, 봇의 보안 등을 고려해야 합니다. RDA 기반 봇(Bot) 개발 절차는 다음과 같습니다.
수집할 데이터 목록 작성
데이터란 숫자, 문자, 기호 등으로 표현한 것을 말합니다. 데이터 수집은 문제를 해결하기 위해 적절한 자료를 모으는 과정입니다. 데이터 수집 목록을 작성할 때는 데이터의 유형, 데이터의 양, 데이터의 정확성 및 신뢰성 등을 고려해야 합니다.
데이터를 수집할 웹사이트 식별
데이터를 수집할 웹사이트를 식별할 때는 웹사이트의 인기도, 웹사이트의 신뢰도, 웹사이트의 데이터 품질 등을 고려해야 합니다. 수집할 데이터의 품질은 선택한 웹사이트에 따라 결정되기 때문입니다.
웹사이트의 데이터 구조 분석
웹사이트의 데이터 구조를 분석할 때는 수집할 데이터가 존재하는 웹페이지 위치, 수집할 데이터의 형식 등을 고려해야 합니다.
수집할 데이터가 위치한 페이지가 사용자가 로그인 후에만 접근가능한 페이지라면 봇 개발 시에 자동 로그인 기능을 구현해야 하기 때문입니다.
또한 수집할 데이터의 형식이 특정 규칙으로 패턴화 되어 있는지 확인해야 합니다. 데이터의 형식이 패턴화 되어 있다면 정규 표현식 또는 정규식1을 통해 쉽게 검색할 수 있습니다.
봇 개발에 적합한 언어 또는 도구 선정
봇 개발에 적합한 언어 또는 도구를 선택할 때는 봇이 실행될 환경, 봇이 수집해야 할 데이터의 유형, 언어 또는 도구 숙련도 등을 고려해야 합니다.
봇이 실행될 환경이 윈도우 데스트톱에서 실행될 것인지, 리눅스 서버에서 실행될 것인지를 먼저 고려해야 합니다. 데스크톱은 서버 환경에 비해 사용자의 개입이 많은 환경이기 때문에 봇 실행 후에 예외적인 상황을 더 많이 고려해야 합니다.
봇이 수집해야 할 데이터의 유형이 쉼표(,)와 같이 특정 구분자로 이루어져 있는 패턴형 데이터라면 오토핫키나 파이썬에서 지원하는 문자열 찾기 기능 함수나 정규표현식 기능 함수를 통해 쉽게 찾을 수 있습니다.
마지막으로 각 언어의 숙련도를 고려해야 합니다. 언어나 도구를 이용하여 개발하는 개발자의 숙련도에 따라 개발에 드는 시간을 예상할 수 있습니다.
봇 개발
데이터를 수집할 봇을 개발할 때는 웹사이트의 데이터 구조를 분석한 결과를 바탕으로 개발해야 합니다. 선택한 언어나 도구를 사용하여 웹사이트에서 데이터를 수집하는 코드를 작성해야 합니다. 봇이 웹사이트를 인식하고 탐색하는 방법은 구조분석 방법, 화면 인식 방법으로 크게 2가지가 있습니다.
1) 구조분석 방법
구조분석 방법은 웹 페이지의 HTML과 같은 소스 코드 구조를 분석하여 각 요소(버튼, 에디트박스, 체크박스 등)를 탐색하는 기법입니다. 대표적으로 웹 애플리케이션 자동화 모듈로 가장 많이 알려진 셀레니움(Selenium) 모듈을 활용할 수 있습니다. 셀레니움(Selenium) 모듈은 파이썬(Python), 자바(Java), C#, 오토핫키(Autohotkey), VBA 등 다양한 언어와 결합하여 사용할 수 있습니다. 구조분석 방법은 화면 인식 방법에 비해 정확도가 매우 높습니다.
2) 화면 인식 방법
화면 인식 방법은 데스크톱 화면 캡처(Capture)를 통해 영상(Image)을 획득하여 분석하는 방법입니다. 영상(Image) 분석은 분석 엔진의 성능에 따라 정확도가 결정됩니다. 일반적으로 윈도우에 내장된 GDI Plus 또는 OpenCV 모듈 API를 통한 이미지 비교를 통해 요소를 탐색하는 방법입니다. 구조분석 방법에 비해 정확도가 낮으며 이로 인해 테스크(Task) 수행 시 많은 오류를 발생시킬 수 있습니다.
봇이 웹사이트를 인식하여 수집한 데이터는 txt, CSV, JSON 파일 등 다양한 형식으로 저장할 수 있습니다. 마지막으로 제 3자에 의해 무분별한 배포를 막기 위해 실행 및 사용 권한 인증에 대한 보안 기능 개발도 포함되어야 합니다.
봇 테스트 및 배포
봇을 테스트할 때는 봇이 데이터를 정확하고 완전하게 수집하는지 확인해야 합니다. 또한 봇을 배포할 때는 봇이 웹사이트에 영향을 미치지 않도록 주의해야 합니다. 봇의 과도한 탐색 및 수집기능은 웹사이트 서버에 비정상적인 트래픽을 증가시켜 서버 다운을 발생시킬 수 있습니다.
데스크톱 자동화(RDA) 기반 웹사이트 데이터 수집 봇 개발은 복잡한 과정이지만, 적합한 언어나 도구를 사용하면 봇을 쉽게 개발할 수 있습니다.
정리하며
이번 칼럼에서는 데스크톱 자동화(RDA), 웹사이트 데이터 수집 봇이 왜 필요한지, 이 봇은 어떤 절차로 개발할 수 있는지 알아보았습니다. 봇 개발에 앞서 어떤 점을 고려해야 하는지 많은 인사이트를 얻길 기대하며 이번 칼럼을 마칩니다.
각주
1 정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.↩
본 칼럼 내용에 대해 문의 하실 사항이나 필요하신 칼럼 주제가 있으시면 언제든지 댓글로 알려주세요.