도구들 간 만보다가 예전 셀레니움도 로그인 때문에 역시 엄청 애먹은적이 있어
네이버 카페처럼 "사람만 들어오세요" 방패를 세운 곳에선 말이죠.
쉽고 직관적인 그래서 결국...
PyAutoGUI라는 눈물의 자동화 도구에 손을 댔습니다.
1. PyAutoGUI: 사람 흉내는 장인, 하지만…
처음엔 기분 좋았습니다.
"이걸로 브라우저 열고, 로그인도 하고, 이미지도 클릭하고 다 하겠군!"
✅ 진짜 마우스가 움직인다
✅ 진짜 키보드가 타이핑된다
✅ 진짜 브라우저로 로그인해서 들어간다!
🟢 장점은 단 하나,
"사람처럼 실제로 클릭하니 로그인 100% 성공!"
이거 하나는 진짜 꿀이었습니다. 나머지는... 흠...
2. 현실은 해상도 지옥
PyAutoGUI는 좌표 기반입니다. 그래서:
- 노트북과 데스크탑에서 좌표 다름
- 브라우저 크기만 달라도 위치 달라짐
- 크롬 툴바 하나만 있어도 오차 발생
pyautogui.click(324, 712) # ← 이 좌표, 다른 PC에선 허공임
심지어 창 최대화 안 해놓으면 자동화 틀어짐 😵
내가 만든 프로그램인데, 내가 쓴 해상도 아니면 못 씀
3. 이미지 찾기는 더한 지옥
“그럼 이미지로 UI 요소 찾으면 되지 않을까?” → OpenCV 사용
하지만 현실은?
- 글자 하나만 달라도 못 찾음
- 브라우저 스케일 조금만 바뀌어도 못 찾음
- 반응형 UI라 DOM 구조가 달라지면 무용지물
이미지로 찾으려다 정신 줄 놓을 뻔 🤯
4. 게시물 구조는 왜 자꾸 바뀌는 거야
가장 핵심은 게시글 클릭 & 페이지 넘김이었는데...
- 게시글 제목 길어서 두 줄이면 → 아래 네비게이션 위치가 바뀜
- 평소에 글이 15개가 있는데 마지막 페이지 도착하면 글이 1~15개 사이에 있음.
- 평소에 10개인데 마지막 페이지 도착하면 페이징 번호가 1~9개 사이로 뭐가 있을지 모름
좌표 기반 자동화는 이런 변화에 너무 약했습니다.
그래서 OCR 도입 시도!
5. Tesseract OCR: 나를 속인 너의 음성...
"동적으로 변화하는 숫자 인식해서 페이지 넘버 추적하자!"
결과는? 두구 두구 두구
- '3' → '8'
- '5' → 'S'
- '10' → '1O' 또는 'lO'
이건 무슨 캡챠보다 어려운 숫자 인식… 😵💫
6. 결국 DOM 접근을 시도하다
크롬 개발자 도구 열고, 자바스크립트로 DOM 추출.
document.querySelectorAll('.board-box a')
→ 게시물 수 확인 후 PyAutoGUI로 클릭 위치 계산
근데 절차는....(조상님이 대신해 줄려나?)
- 개발자 도구 열고
- 콘솔에 JS 입력하고
- 결과 복사하고
- PyAutoGUI로 넘기고
자동화가 아니라 수동화된 자동화가 되어버림 😮💨
7. 최악은 타이밍 지옥
렌더링 완료 전에 PyAutoGUI가 클릭하면?
- 요소가 안 떠서 클릭이 안 됨
- 커서는 이동했는데 클릭은 씹힘
time.sleep(5)
pyautogui.moveTo(..., duration=1.5)
pyautogui.press('tab')
갖은 꼼수를 써봤지만...
속도는 느려지고, 디버깅은 지옥이고, 안정성은 로또 🎲
8. 최종 결론
💣 해상도 바뀌면 이 프로그램은 못 씁니다. 끝.
이건 내 컴퓨터에서만 돌아가는 맞춤형 자동화.
내가 만든 건 크로스 플랫폼 자동화가 아니라, 단일 기기 매크로.
🎯 배운 점 요약
시도 결과
PyAutoGUI | 로그인 OK → 나머지는 불안정 |
OCR | 인식률 구림 |
OpenCV | 환경 따라 결과 달라짐 |
JS + PyAutoGUI 혼합 | 정신 혼미, 유지보수 불가 |
✍️ 마무리하며
이 여정을 통해 진짜 배운 건...
UI 흉내내기보다, 진짜 데이터 구조를 이해하는 게 진짜 자동화다.
하지만 현실에선 결국 PyAutoGUI 같은 꼼수도 필요하다는 것.
어쩌면 자동화는 늘 창과 방패의 싸움이 아닐까요?
읽어주셔서 감사합니다!!
'그것 관심사↗' 카테고리의 다른 글
[크롤링 실전기 2편] 크롤링 도구별 강점과 약점 – 삽질도 도구가... (0) | 2025.05.19 |
---|---|
[크롤링 실전기 1편] 결국 내가 직접 만들기로 한 이유 (Octoparse → 직접 개발까지) (1) | 2025.05.19 |
APM 어플리케이션 - 스카우터 (0) | 2024.11.25 |
SSH Public 키 접속 (1) | 2024.06.07 |
네이버 AD 광고 API 개발기 (1) | 2024.04.17 |
아이맥 모니터 개조기 - 실전편 (1) | 2024.04.07 |
아이맥 모니터 개조기 - 당근당근 (0) | 2024.03.23 |
매킨토시 클래식 - 내부 (1) | 2024.03.18 |