분양 정보 앱 두 곳을 하나의 수집 도구로 묶었습니다
관심 지역과 테마를 고르면 앱 목록을 끝까지 훑어 매물 정보가 엑셀로 떨어집니다. 화면을 사진으로 찍어 읽는 대신 앱이 그리는 화면 구조를 그대로 읽습니다.
두 앱의 분양 매물 확인
앱을 열어 매물마다 하나씩 옮겨 적음 에서 지역·테마 선택 후 실행 1회 · 엑셀 정리 (으)로
배경
분양 정보는 앱 안에 있습니다. 웹으로 같은 것을 볼 수 없는 경우가 있고, 그러면 사람이 앱을 열어 목록을 내리며 하나씩 확인하는 수밖에 없습니다.
이 일은 앱 두 곳을 봐야 했습니다. 한 곳은 지역으로 나뉘고(15개 지역), 다른 곳은 테마로 나뉩니다(아파트·오피스텔·상가). 화면 구성이 서로 다릅니다.
현장에서 본 것
앱을 열고, 매물을 눌러 상세를 보고, 필요한 항목을 하나씩 옮겨 적고 있었습니다.
목록은 스크롤할수록 계속 이어집니다. 끝이 어디인지 화면만 봐서는 알 수 없습니다. 지역이 열다섯이면 열다섯 번이 아니라 매물 수만큼입니다. 그리고 그 일은 다음 날 처음부터 다시 시작됩니다.
정의한 문제
두 앱을 하나의 도구로 다루는 것이 문제였습니다.
한 앱에 맞춰 만든 뒤 다른 앱을 위해 고치면, 먼저 만든 쪽이 깨집니다. 두 벌을 따로 만들면 고칠 일이 생길 때마다 두 번씩 고쳐야 합니다.
만든 것
- 화면 구조를 그대로 읽습니다 — 화면을 사진으로 찍어 글자를 알아보는 방식이 아닙니다. 앱이 그리는 화면 구조를 읽어 원하는 항목의 위치를 찾습니다. 글꼴이나 해상도가 달라져도 같은 자리를 찾습니다
- 대상을 골라 실행합니다 — 한 앱에서는 지역 15곳 중에서, 다른 앱에서는 테마 세 가지 중에서 고릅니다. 고르는 화면은 하나이고, 목록만 앱에 따라 바뀝니다
- 목록 끝까지 이어 갑니다 — 화면에 아직 안 뜬 항목은 조금씩 내려 가며 기다립니다. 버튼이 보이지 않는다고 곧바로 실패로 처리하지 않습니다
- 진행 상황을 화면에 — 지금 어느 단계인지, 몇 건째인지 보여줍니다. 오래 걸리는 작업은 진행이 보이지 않으면 멈춘 것과 구분되지 않습니다
- 한 뼈대로 두 앱 — 먼저 만든 앱의 이동 로직은 한 줄도 건드리지 않고, 다른 앱을 위한 이동 방식을 옆에 새로 두었습니다. 부르는 쪽에서 갈라집니다
결과
지역이나 테마를 고르고 실행하면 목록이 끝까지 수집되고, 끝나면 엑셀이 남습니다.
같은 방식으로 만든 다른 일은 앱 크롤링에 모아 두었습니다.
사실 출처
납품 코드와 작업 계획서, 발주처 견적서