취미로 수영을 다니고 있습니다. 당일에 개인이 수영장에 수영을 하러 가는 것을 '자유수영'이라고 하는데요. 수영장마다 비용도 다르고 운영시간도 다르며, 심지어는 자유수영을 운영하지 않는 경우도 있어서 방문 전 확인이 필요하다는 생각이 들었습니다.
집 근처 자주 다니는 수영장 운영 정보는 비교적 쉽게 알 수 있습니다. 하지만 '원정 수영'(?)을 가거나, 갑작스러운 일정으로 다른 지역에 머물 때면 이야기가 달라집니다. 특정 시간대에 그 근방에서 자유수영을 할 수 있는지에 대한 정보를 정확히 찾아내기가 쉽지 않음을 여러 번 느꼈습니다.
물론, 수많은 수영장 정보를 한데 모아놓은 플랫폼들이 존재합니다. 그러나 저는 개인적으로 이러한 플랫폼들이 제가 필요로 하는 정보를 직관적으로 바로 찾기 어렵다는 느낌을 받았습니다. 그래서 결국 저 역시도 이러한 불편함을 해소할 만한 비슷한 플랫폼을 직접 만들어야겠다는 생각이 들었습니다.
막상 데이터 수집을 시작하려니 현실적인 문제에 직면했습니다. 수영장마다 운영 시간을 보여주는 방식이 천차만별이라는 점입니다. 단순히 텍스트 형태로 제공하는 곳도 있지만, 이미지 파일로 정보를 올리는 곳도 있고, 심지어 게시판에 첨부파일로 운영 정보를 담아놓는 곳도 있었습니다. 단순히 수영장 사이트의 존재를 아는 것만으로는 필요한 정보에 접근하기가 헷갈릴 수밖에 없었습니다.
저는 수영장 운영 원천 정보의 정확도를 높이면서도, 이 정보들을 한데 모으고 싶다는 생각이 들었습니다. 왜냐하면 단순히 특정 시점에 조사된 정보는 그 당시에는 정확도가 높겠지만, 시간이 흐를수록 정보의 정확도는 자연스럽게 떨어질 것이기 때문입니다. 운영시간이 변경되거나, 수영장이 폐업하거나, 일시적으로 운영을 중단하는 등의 경우가 추후에 발생할 때, 제가 구축하려는 플랫폼에서도 이러한 최신 정보가 반드시 반영되기를 바랐습니다. 이것이 이 플랫폼의 본질적인 가치라고 생각했습니다.
이러한 고민 끝에, 저는 우선 이미지나 첨부파일 형태의 정보는 잠시 제외하고, HTML로 정보를 가지고 올 수 있는 사이트부터 먼저 진행하기로 했습니다. 각 사이트에서 필요한 운영 정보를 파싱하기 위해 테이블 양식을 분석하고, 이를 데이터베이스에 저장하는 작업을 진행했습니다.
수집된 데이터들은 추후에 크론(Cron) 동작을 통해 하루에 한 번씩 크롤링하도록 설계했습니다. 이는 이전에 수집한 정보에 이상이 없는지를 비교하고, 변경된 내용이 있다면 최신 정보로 업데이트하여 정보의 정확도를 꾸준히 높일 수 있도록 하기 위함입니다. 이렇게 함으로써 플랫폼의 정보가 항상 신뢰할 수 있는 수준으로 유지될 것이라는 생각이 들었습니다.
물론, HTML뿐만 아니라 이미지나 첨부파일 형태로 운영 정보를 제공하는 수영장 역시 그 정보를 추출하는 방법이 있습니다. 저는 전통적인 크롤링 방식인 HTML 추출 작업부터 먼저 진행하여 전반적인 가능성과 데이터 플로우를 구축했습니다. 이제 이 기반 위에서 나머지 이미지 및 첨부파일 정보도 추출할 수 있도록 시스템을 확장하여, 해당 정보가 필요한 사용자에게 더 접근성이 높은 정보를 제공할 수 있도록 할 예정입니다.