수집한 업체 데이터를 정규화해 엑셀로 내보내기

데이터 · 크롤링4분 읽기

크롤링에서 화면의 데이터를 뽑아내는 것은 절반의 일입니다. 나머지 절반은 뽑아낸 날것의 텍스트를 사람이 바로 쓸 수 있는 표로 다듬는 정규화입니다. 지도 검색 결과의 한 항목에는 상호와 주소뿐 아니라 별점, 리뷰 수, 업종, 영업시간, 가격대, 서비스 옵션이 뒤섞여 있습니다. 이걸 구분 없이 담으면 주소 칸에 영업시간이 들어가고 카테고리 칸에 가격이 들어가는 엉망진창 표가 됩니다. 해외 업체 리스트를 모으던 사업자의 수집 도구에서, 이 정규화가 데이터의 실사용 가치를 갈랐습니다.

주소인 척하는 것들을 걸러 낸다

한 업체 항목의 텍스트를 줄 단위로 훑으면 어느 줄이 주소인지 처음엔 분명치 않습니다. 지도 목록은 업종과 주소를 가운뎃점으로 이어 한 줄에 보여 주기도 하고 그 옆에 영업 상태나 가격대를 같은 형식으로 붙이기도 합니다. 그래서 가운뎃점으로 나눈 조각 하나하나를 놓고 이게 주소일 가능성이 있는지, 아니면 걸러야 할 잡음인지 판별합니다.

걸러 내야 할 것들은 유형이 뚜렷합니다. 오전 몇 시, 영업 중, 영업 종료 같은 영업시간 표현, 화폐 기호나 인당 얼마 같은 가격 표현, 별점과 리뷰 수, 포장이나 배달 같은 서비스 옵션이 그렇습니다. 이것들은 각각의 패턴으로 알아보고 주소 후보에서 제외합니다. 반대로 시도 이름이나 도로명 같은 주소다운 단서가 있는 조각은 주소로 채택합니다. 가운뎃점 형식이 없으면 줄과 줄을 비교해 주소로 보이는 줄을 찾고 그 주변에서 업종 후보를 고르는 식으로, 형식이 달라도 흔들리지 않게 여러 겹의 판별을 뒀습니다.

세 나라 표기를 함께 읽는다

이 도구는 한국뿐 아니라 일본과 미국의 지도도 다룹니다. 그래서 정규화도 세 언어를 함께 감안해야 합니다. 리뷰 수만 봐도 표기가 제각각입니다. 한국어는 리뷰 몇 개, 영어는 몇 reviews, 일본어는 몇 件으로 씁니다. 별점과 리뷰가 붙어 나오는 형식도 나라마다 미묘하게 다릅니다. 각 언어의 표기 패턴을 모두 갖춰 두고 어느 것에 걸리든 숫자만 정확히 뽑아 통일된 형식으로 바꿉니다. 천 단위 구분 기호나 공백 같은 군더더기는 이 단계에서 정리합니다.

별점은 특히 조심해야 합니다. 주소나 영업시간에도 숫자가 널려 있어 아무 숫자나 별점으로 오인하면 엉뚱한 값이 들어갑니다. 그래서 별점 관련 단어가 함께 있거나 별점과 리뷰 수가 괄호로 묶인 특정 형식일 때만 별점으로 인정하도록 조건을 좁혔습니다. 이렇게 언어별 패턴과 문맥 조건을 겹쳐야, 세 나라의 서로 다른 표기에서도 별점과 리뷰 수가 제 칸에 정확히 들어갑니다.

인접 지역을 덜어 내고 엑셀로 내보낸다

정규화된 데이터에는 한 가지 손질이 더 필요합니다. 지역을 칸으로 나눠 훑다 보면 경계 근처에서 옆 시도의 업체가 섞여 들어옵니다. 서울을 수집했는데 경기 초입의 가게가 몇 개 딸려 오는 식입니다. 그래서 수집한 주소가 사용자가 지정한 지역에 속하는지 확인해 걸러 냅니다. 이때 서울특별시, 서울시, 서울처럼 같은 지역의 여러 표기를 모두 인정해야 멀쩡한 결과를 실수로 버리지 않습니다.

마지막은 내보내기입니다. 결과는 CSV로 저장하되 담당자가 대부분 엑셀로 여는 점을 고려했습니다. 한글이 깨지지 않도록 엑셀이 인식하는 인코딩으로 저장하고 상호와 주소, 전화번호, 홈페이지, 별점, 리뷰 수, 업종, 지도 링크, 고유 식별자까지 정해진 순서의 열로 정리합니다. 수집이 끝난 뒤 한꺼번에 쓰는 것이 아니라 업체를 하나 확정할 때마다 즉시 한 줄씩 파일에 덧붙이므로, 중간에 멈춰도 그때까지의 결과는 파일에 남아 있습니다. 파싱과 정규화와 내보내기가 한 흐름으로 이어져야 비로소 바로 쓸 수 있는 표가 나옵니다.

화면에서 항목을 건져 내는 앞 단계는 가상 스크롤 목록 파싱에서, 여러 칸에 걸친 중복 정리는 중단 후 이어받는 크롤러에서 다룹니다. 전체 시스템은 지도 업체 정보 수집 자동화 사례에 있습니다.

자주 묻는 질문

주소 칸에 영업시간이나 가격이 왜 섞이나요?

지도 목록이 업종, 주소, 영업 상태, 가격대를 같은 형식으로 나란히 보여 주기 때문입니다. 구분 없이 담으면 주소 칸에 엉뚱한 값이 들어갑니다. 그래서 영업시간, 가격, 별점, 서비스 옵션 같은 잡음을 각각의 패턴으로 알아보고 주소 후보에서 걸러 낸 뒤 진짜 주소만 채택합니다.

세 나라 지도를 하나의 도구로 다룰 수 있나요?

리뷰 수와 별점 같은 값의 표기가 한국어, 일본어, 영어마다 다르므로, 각 언어의 패턴을 모두 갖춰 두고 어느 것에 걸리든 숫자만 뽑아 통일된 형식으로 정규화합니다. 덕분에 나라가 달라도 같은 열 구조의 표로 정리됩니다.

왜 결과를 한꺼번에 안 쓰고 한 줄씩 쓰나요?

업체를 하나 확정할 때마다 즉시 파일에 덧붙이면, 수집이 중간에 멈춰도 그때까지의 결과가 파일에 그대로 남습니다. 한꺼번에 쓰다가 중단되면 전부 날아갈 수 있어 증분 기록이 더 안전합니다. 엑셀에서 바로 열리도록 인코딩도 맞춰 저장합니다.

#데이터정규화#CSV#파싱#다국어처리

업무자동화 구축이 필요하신가요?

무료 상담 신청