회사 페이지를 추가하다가 마케팅부 얘기를 듣고 파이썬으로 프로그램 하나를 개발해주기로 했다.
이유는 내 능력 상승도 있고 재밌을 것 같아서 만들기로 했다.
개발을 프로토타입 정도로는 마쳤더니 기존 널리 알려진 웹 크롤링 방식으로는 막혀있더라.
클래스 값으로 접근하나 아이디 값으로 접근하나 암호화된 문장을 긁어올 뿐이었다.
그래도 해결할 수 있는 방법이 있을꺼라 생각해서 그 암호화를 뚫고까지 접근해 보았으나 그것마저 막혀있었다.
결국 무산으로 돌아갔었는데 이번엔 다른 방법으로 접근해보기로 했다.
바로 캡처를 한 다음에 이미지에 있는 문자를 파싱해서 문자 그대로 출력하는 것이었다.
조건은 이와 같았다.
- .exe파일로 만들어서 GUI로 편하게 START / STOP을 하면서 컨트롤이 가능하도록.
- 한번 프로그램을 시작하면 매일 오전 11시 55분 & 오후 11시 55분에 7개 페이지 조회수 부분만 캡처.
- 2자리부터 4자리까지 캡처할 수 있도록. (하루 조회수가 0회부터 시작해서 많게는 1000회 이상이 나왔기 때문에)
- 기존 url에 접속해서 id값이나 class값을 긁어오는 방법이 아니라 chromedriver를 이용해서 크롬 웹을 직접 오픈해서 캡처.
- 기록한 7개 페이지의 조회수는 메일 혹은 엑셀에 매번 자동으로 송부되거나 정리되도록.
시작은 순조로웠다.
프로그램 소스도 다짰고 GUI환경으로 시작과 끌 수 있는 버튼까지 만들었다.
그런데 문제는 이미지를 파싱하는 부분에 있었다.
조회수 부분을 캡처하면서 뒷 배경에 줄무늬 같은 것이 들어가면 숫자가 아니라 영문으로 나오기도 하는 오류가 발생했다. 이 오류를 발견하기 전. 2일만에 다 끝냈었기 때문에 벌써 다 끝냈나? 싶었지만 역시 아니었다.
정확히 이미지를 파싱하게 하기 위해서 다른 문자 없이 숫자를 받아올 수 있도록 설정하고
배경을 어둡게도 해보고 숫자와 배경에 반전도 줘보고
캡처하는 이미지를 확대도 해보고 webdriver를 이용한 크롬창도 DOM을 이용해서 body style을 확대도 해보았다.
정확도가 점점 높아지면서 끝을 보는듯 하면 또 제대로 읽어오지 못하는 문제들이 있었다.
100번 이상을 돌려보면서 숫자가 아닌 문자가 나오는 부분은 replace를 이용해서 숫자로 고치거나 필요없는 문자가
나오지 않도록 처리했지만 10번중 3~4번 정도는 숫자가 아니라 영문이 나왔다.
정말 다양한 기능을 사용하면서 별의별 방법을 시도해보았지만 쉽게 결론이 나지 않아서
처음으로 돌아가서 뭐가 문제인지 신중하게 파악을 했고 결국 방법을 찾아냈다.
가장 정확도가 높았던 방법은 이미지 크기, 화질, 대비되는 정도 뭐 이런 조건들이 문제가 아니었다.
그냥 배경이 깔끔하고 숫자 색상, 배경 색상만 다르면 되는 것이었다.
이런 조건들을 갖추고나니 10번중에 9번 혹은 10번은 정상적으로 출력되었다.
이제 매일마다 마케팅부서로 경쟁사 블로그들의 조회수가 자동으로 전송된다.
이렇게 일기장처럼 쓰고나니 별 것 아닌 것처럼 느껴지지만
내가 처음으로 만든 제대로 된 프로그램이다.
파이썬은 역시 재밌는 듯 하다.
자바스크립트 공부를 하다가 나중에 시간이 날 때 파이썬을 좀 더 심도있게 공부해서
요즘 핫한 머신러닝이나 빅데이터쪽을 배워보고 싶기도 하다.
굉장히 유용하게 이곳저곳에 쓰일 것 같다.
역시 현재 인기 언어답다.
댓글