업무시간 4시간에서 1.5시간으로 줄여준 자동화 시스템 후기

강문혁·2023년 5월 30일
1

사이드 프로젝트

목록 보기
1/2
post-thumbnail

사용한 라이브러리

(가격 수집 스크래핑 봇)
Selenium, BeautifulSoup4, Pandas, df2gspread
(가격 수정 프로그램)
Tkinter, request

글을 시작하기 전 소스 코드는 공개를 못한다는 점 양해 부탁드립니다. 😂

제작의도

한창 용산에 있는 노트북 판매 업체에서 알바했을 때 느꼈던 점은
세상에는 내가 생각한 것보다 정말 많은 노트북들이 판매되고 있다.

그리고 그 노트북들의 가격은 하루가 다르게 가격이 조정되는데
그 가격을 일일이 사람이 수기로 수집해서 관리할 수 있을까라는 생각과 함께
실제로 사장님이 가격을 정리하는 모습을 보았을 때, 수많은 제품 중에서 추려내어 가격 시세를 파악하고 최저가를 찾아내고 구글 시트에 정리하고 실제로 판매하는 스토어에 가격 반영까지 4~5시간 이상이 걸렸었다.
(이것도 주력 제품 기준으로 걸렸던 시간이었다.)

이런 과정을 줄이기 위해 사장님께서 데이터 수집 프로그램 제작을 부탁하셨다.


견적을 짜보자

1. 기존 사장님께서 관리하셨던 구글 시트의 불편한 점을 정리 후 기존 형식에서 크게 벗어나지 않고 개선해야 한다.

2. 데이터 수집과 수집한 데이터를 정리해야 하기 때문에 Selenium, BeautifulSoup4, Pandas 공부를 해야 한다.

3. 수집한 데이터를 제조사별로 시트를 분리해 추후 데이터에 문제가 생겼을 때 별도로 쉽게 대응할 수 있도록 설계해야 한다.

4. 24시간 프로그램을 돌릴 수 있게 하여 별도의 조작 없이도 연속적으로 수집해야 한다.

이렇게 총 4가지의 중요 포인트를 가지고 개발을 하게 되었고 결과를 말하자면

결과

  1. 다나와의 모든 노트북 제품 가격을 관리할 수 있게 되었다.
    (이론상으로 모든 제품을 수집할 수 있지만 수집 속도를 위해 주요 회사의 제품만 수집하게 되었다.)

  2. 판매 스토어에 가격 수정을 반자동화 시켜 일일이 가격을 직접 수집하고 판매 스토어 반영까지 4~5시간 걸렸던 시간을 1~1.5시간으로 단축하였다.

  3. 판매 스토어에 빠른 가격 수정을 위해 기존 사용했던 쇼핑몰 통합 관리 솔루션에서 제공한 API를 활용해 가격 수정 프로그램을 별도로 제작하여 가격 수정의 편의성을 높였다.


시스템 구조

Selenium으로 만든 수집 프로그램

Python의 Selenium을 활용해 데이터 수집 봇을 만들었다.
이유는 당연하게도 요즘은 한 번에 모든 데이터를 받아와서 보여주는 정적 웹(Static Web Page) 형식이 아닌
동적 웹 (Dynamic Web Page) 형식이 많기 때문이다.

특히나 다나와에서 각 제조사 별로 데이터를 수집하기 위해서
체크 박스에 표시를 해야 하는 과정이 필요해 Selenium을 활용해 만들어야 했다.

그리고 추가로 11번가 사이트도 스크래핑을 하였는데

다나와, 11번가 이렇게 스크래핑 프로그램을 나눠서 분류하여 버그가 발생할 때 수정하기 편하게 만들었다.

해당 프로그램은 24시간 프로그램을 실행해 데이터를 수집했으며

백업 데이터 저장 기능까지 있었다.

사실 백업 기능은 df2gspread의 버그인데
가끔씩 정해진 시트가 아닌 자체적으로 새로운 시트를 만들어 데이터를 저장하는 현상이 있었다. 하지만 이런 버그 덕분에 백업데이터를 모아둘 수 있어서 가끔씩 데이터가 제대로 구글 시트에 반영이 되지 않을 때 데이터를 가져와 복구할 수 있었다.

수집한 데이터 저장하기

다나와 수집 결과물
하단에 보면 각 제조사 별로 정리되어 있는 모습을 볼 수 있다.

11번가 수집 결과물
검색어가 좀 부정확해서 상품번호로도 추후 통합 관리 시트에 불러올 수 있게 만들었다.

통합 관리 시트...

통합 관리 시트는 아쉽게도 공개가 조금 힘들다...
엄청 간단하게 MATCH 함수로 다나와 그리고 11번가의 시트를 참조할 수 있게 만들었다.
이렇게 한 이유는 통합 관리 시트에 정보들이 너무 많아 분산이 필요했고
관리하기에 훨씬 용이할 것 같아 이렇게 구조를 만들었다.

가격 수정 프로그램

사용자는 자동으로 가격이 수정된 통합 관리 시트를 엑셀로 저장 후 가격 수정 프로그램만 실행하면 끝난다.


프로그램은 Python의 Tkinter로 만들었다.

사용 방법은 간단하다.
통합 관리 시트를 엑셀로 저장해 가격 수정을 하고 싶은 시트를 선택하고,
값을 전송할 열을 작성 후 API 전송 버튼을 누르면 가격이 일괄적으로 수정하기 시작한다.

API 서버에 문제가 없다면 제품 하나 당 1~3초의 시간이 소요된다.


검증

아무래도 "수집한 데이터가 정확한 가?!"에 대해 의문을 품는 건 당연하고 약 1개월 동안 사장님께서 직접 사용하고 피드백을 주면서 데이터 검증도 끝마쳤다.

아쉬운 점

개인적으로 아쉬웠던 점은 데이터 수집 방지를 위한 게 아닌 쇼핑몰 상위권에 노출을 많이 하기 위해
보통 상품명에 여러 키워드를 많이 넣어두는데 이것 때문에 제품명 추출이 많이 어려웠다.
차선책으로 상품코드를 참조할 수 있게 수정을 하긴 했지만... 아쉬운 건 아쉽다...
요즘은 Chat-GPT 같은 친구를 활용해서 제품명만 따로 뽑아내주거나
별도로 추출하는 알고리즘이나 AI를 만들어보고 싶었으나... 다른 것들을 만드느라 정신없었다.

마무리

이렇게 사용자가 직접 제품 가격을 하나하나 수집하는 것을 봇을 제작해
업무시간을 확 줄였다는 것에 매우 뿌듯했다. 이래서 다들 자동화를 하는구나 싶고
개인적으로 Selenium 과 Python 내장 함수에 대해 많이 알 게 되었다.

profile
흔들리지 말고 나만의 공부를 하자

0개의 댓글