티스토리 뷰

아파트 매물을 볼 때 가장 많이 사용하는 서비스는 네이버 부동산일 것입니다. 그러나 네이버 부동산 웹페이지를 그대로 사용하는 것은 왠지 불편합다. 평당가가 얼마인지 확인하기도 쉽지 않고 내가 원하는 층이나 동호수 별로 세부적인 필터를 만들 수도 없기 때문입니다.

네이버 부동산에 있는 매물 정보들을 엑셀로 정리할 수 있으면 참 좋겠다는 생각이 들었습니다. 다만, 매크로나 VBA 같이 프로그래밍을 하기 시작하면 일이 너무 커질 것 같았습니다.

 

▼ 바로 이런식으로 가격은 [15억 이하], 층수는 [20층 이상, 혹은 고층] 으로 필터를 걸어서 본다든가 말이죠.

 

그래서 고민을 하다 매크로나 VBA를 사용하지 않고 엑셀 기본 기능과 함수 만으로 네이버 부동산 매물을 정리하는 방법을 찾았습니다. 오늘은 이 방법에 대해 알려드리겠습니다.

 

 

1. 네이버 부동산에서 정보 저장하기

 

먼저, 엑셀로 부동산 매물 정보를 정리하기에 앞서 네이버 부동산 웹페이지에서 필요한 정보들을 가져와야 합니다. 보통은 크롤링이나 스크래핑 같은 기술을 사용 할테지만 이번에는 오직 엑셀 기본 기능만 사용할 터라 프로그래밍 기술은 사용하지 않을 예정입니다.

그럼 어떻게 하느냐? 메모장으로 [복사-붙여넣기]를 해서 정보를 가져올 겁니다.

 

▼ 우선 매물을 찾으러 떠나야겠죠. 예시로 요즘 핫한 송파구 가락동 [헬리오시티]의 매물 정보를 가져와 보기로 했습니다.

  • 네이버 부동산의 매물은 대부분 매경부동산(MK부동산)에서 제공하고 있습니다. 부동산 매물 중 [매경부동산 제공] 이라 표시된 부분을 눌러 매경부동산 웹페이지로 이동합니다.

 

[매경부동산(MK부동산)]으로 이동하는 것은 네이버 부동산보다 MK 부동산의 매물 정보가 좀 더 메모장으로 긁어오기 좋기 때문입니다.

  • [매매] 버튼을 눌러 매물 목록으로 이동합니다.

 

[매매] 버튼을 누르면 [포커스 확인 매물]란에 부동산 매물이 일목요연하게 표로 표시가 됩니다. 이제 드래그를 해서 정보를 [복사]할 건데 복사의 범위를 정확하게 지정해줘야 나중에 귀찮은 일이 없습니다.

  • 표의 제목줄(거래, 확인일자, 매물명, 면적 등 나와있는 부분)부터 복사하는 게 아닙니다.
  • [매매]라고 써져있는 부분부터 복사해야 합니다.

 

▼ 마찬가지로 복사가 끝나는 부분도 정확히 맞춰주셔야 나중에 귀찮은 일이 생기지 않습니다.

  • 공인중개사의 [전화번호] 부분이 아니라 [18p 탁트인 조망 시스템에어컨 급매]라고 쓰여있는 부분까지 확실하게 드래그 해주셔야 합니다.

 

▼ 1페이지부터 5페이지까지 이동하며 표의 내용을 드래그하고 복사하여 메모장에 붙여넣기 합니다. 총 145개 매물임에도 페이지 단위로 복사해오기 때문에 몇 십 초도 안되서 매물 정보를 전부 복사할 수 있습니다.

  • 아래처럼 매물에 관한 정보가 메모장에 줄 단위로 쭉 나열되면 성공입니다.

 

 

2. 엑셀 내용 편집하기

 

이제 메모장에 들어 있는 정보를 엑셀로 가져와 보기 좋은 형태로 정리하기만 하면 됩니다.

 

▼ 먼저, 메모장의 내용을 모두(Ctrl+A) 복사(Ctrl+C)하여 엑셀에 붙여넣기(Ctrl+V) 합니다. 아래와 같이 깔끔하게 정리되면 성공이고 만약 빈칸 등이 생긴다면 빈칸을 없애는 추가 작업을 해주셔야 합니다.

  • 1~10행, 11~20행 단위로 열 개 행씩 매물 정보가 반복되고 있다는 것을 확인할 수 있습니다.

 

 

▼ 매물 하나 당 10개 행씩 데이터가 반복되고 있다는 점을 활용하여 1차원 데이터를 2차원으로 배열해 보겠습니다.

  • [D2] 셀에 [  =INDEX( $A$1:$A$9999 , ( ROW(A1) - 1 ) * 10 + COLUMN( A1 ) , 1 )  ] 함수를 입력합니다.
  • ROW(A1) 값은 1, COLUMN(A1) 값은 1이기 때문에 해당 식은 A열의 [ (1-1)*1+1 , 1 ] 값을 불러오라는 의미가 되어 [A1] 에 있는 "매매"라는 값이 표현됩니다.

 

 

[D2]에 입력한 수식을 우측으로 10칸(M열까지), 아래측으로 여러칸 채워넣습니다.

  • ROW() 함수와 COLUMN() 함수를 사용하여 알맞은 값이 자동으로 입력되도록 세팅해놓았기 때문에 세로로 쭉 나열되어 있던 매물 정보들이 표의 형태로 순식간에 정리됩니다.

 

▼ 단, 위 함수만으로 동작이 완벽하게 되려면 매물 1개당 정보가 10줄씩 딱 맞아 떨어져야합니다. 안타깝게도 헬리오시티 매물 정보에는 간혹가다 비고란을 적지 않은 매물들이 있어 1칸씩 밀리는 사태가 발생하였습니다.

  • 이 경우, 1칸씩 밀린 [노란색 영역]의 함수를 약간 수정해주어야합니다. 수식표시줄에 [빨간색 밑줄]이 쳐져 있는 부분입니다.

 

  • [노란색 영역][ COLUMN() ] 함수 뒤쪽에 [-1] 을 해주었습니다. 데이터가 10줄씩 입력되다가 갑자기 9줄이 입력되었기 때문에 부족한 1칸 만큼 열을 앞당겨 나열해주겠다는 의미입니다.
  • [회색 영역]은 9줄이 두 번 입력된 경우이기 때문에 [-2] 를 해주어야 합니다.

 

▼ 이렇게 밀린 칸까지 보정해주고 나면 숫자 [0]이 반복되는 부분까지 나아가게 됩니다. 숫자 [0]이 쓰여진 부분들은 더 이상 매물 정보가 없는 부분을 의미합니다. 행 번호를 보시면 [145]행까지 있어 145개 매물 정보가 제대로 나열된 것을 알 수 있습니다.

  • 이제 매물 정보를 모두 정리하였으므로 함수는 더 이상 필요 없습니다. 매물 정보 영역을 모두 선택하고 [복사(Ctrl+C)] - [선택하여 붙여넣기(Ctrl+Shift+V)] - [값(V)] - [확인]을 선택하여 함수 정보를 전부 값 정보로 치환합니다.

 

  • [D2] 셀에 더 이상 [ =INDEX( ..............) ] 함수가 아닌 [매매]라는 텍스트 값이 들어가 있는 것을 확인하실 수 있습니다.

 

 

3. 엑셀 정보 꾸미기

 

네이버 부동산 매물 정보를 엑셀로 가져와 표로 정리하는 것은 끝났습니다. 그러나 이를 제대로 활용하기 위해서는 네이버 부동산에 있는 데이터를 그대로 쓸 게 아니라 약간 손봐야 할 필요가 있습니다.

 

▼ 먼저 불필요한 텍스트들을 지워주겠습니다. 아파트 이름에 [ 새창열기], 부동산 이름에 [프리미엄회원] 혹은 [포커스회원] 등 반복되는 말들을 일단 지워야할 필요가 있습니다.

  • 이상한 부분도 있습니다. 층수에 [44095]이니 [43973]이니 알 수 없는 값들이 있는데 이 부분도 처리해주어야 합니다.

 

  • 이런 텍스트들은 [찾기 및 바꾸기(Ctrl+H)] 기능을 활용하는 게 좋습니다. [찾을 내용]에 바꾸고 싶은 문구를 입력하고 [바꿀 내용]에 아무것도 적지 않은 뒤 [모두 바꾸기]를 해주시면 됩니다.

 

 

▼ 층수에 [44095] 이니 [43973]이니 하는 숫자가 뜨는 것은 그곳에 입력된 문자열을 엑셀이 [날짜]로 착각하였기 때문입니다.

  • [44095]와 [43973]은 엑셀에서 각각 2020년 [9/21]과 [5/22]에 매칭되는 숫자입니다. 9월 21일과 5월 22일은 존재할 수 있는 날짜기에 엑셀이 층수를 날짜로 착각해버린 겁니다. ( [15/29]나 [저/35]와 같은 다른 층수들은 날짜가 될 수 없기에 문자 그대로 표시됩니다. )

 

  • 단순히 날짜 표시만 멀쩡하게 하려 한다면, [G]열 서식에서 표시형식을 [m/d] 형태로 변경해주기만 해도 됩니다. 그러나 저는 엑셀의 필터 기능을 극대화하기 위해서 [G]열의 층 정보를 [해당층]과 [최대층] 정보로 나누어보겠습니다.

 

[G]열 옆에 열을 2개 삽입하고, [해당층][최대층]으로 계열을 입력해줍니다.

  • 먼저 [해당층]의 [H2]에는 [ = IF( ISNUMBER(G2), MONTH(G2), LEFT(G2, FIND( "/" , G2) - 1) ) ] 이라 입력해줍니다.
  • 층수가 날짜인 경우에는 달(MONTH)을, 문자인 경우에는 슬래시 이전의 문자열을 넣어주겠다는 의미입니다.

 

  • [최대층]의 [I2] 부분에는 [ = "/" & IF( ISNUMBER(G2), DAY(G2), MID( G2, FIND("/",G2)+1, LEN(G2) - FIND("/", G2) ) ) ] 를 입력해줍니다.
  • 마찬가지로 층수가 날짜인 경우에는 날짜(DAY)를, 문자인 경우에는 슬래시 이후의 문자열을 입력해주겠다는 의미입니다.

 

▼ 함수는 더 이상 필요가 없으므로 [선택하여 붙여넣기]로 [값]을 덮어 씌워줍니다.

 

 

4. 네이버 부동산 매물에 엑셀 필터 적용

 

자, 드디어 네이버 부동산 매물 정보가 깔끔하게 정리되었습니다. 이렇게 층수까지 [해당층]과 [최대층]으로 나누어주면 좋은 것이 바로 엑셀의 필터 기능을 십분 활용할 수 있게 된다는 점입니다.

제목 필드에 [필터]를 추가하고 [해당층] [가격] 부분에 필터를 적용해보겠습니다. 저는 콤보버튼(▼)이 거슬려서 행을 하나 추가해서 2행에 필터를 걸어주었습니다.

 

▼ 먼저, [해당층] 에서 [20층 이상] 및 [고층] 으로 표시된 부분들을 선택해 보겠습니다.

 

▼ 그리고 [가격] [숫자필터] 기능을 사용하여 [15억 이하]가 되는 매물만 선택하겠습니다.

 

▼ 그 결과 총 145개 매물 중에서 제가 건 조건에 맞는 매물은 13개가 보기 좋게 나열됩니다. 

 

 

5. 노하우, 꿀팁

 

VBA나 매크로를 쓰지 않고 엑셀로 네이버 부동산 매물 정보를 정리해 보려 궁리하다가 INDEX, ROW, COLUMN 함수의 활용 방법을 제대로 익히게 되었습니다.

  • INDEX 함수는 지정한 범위 내에서 좌표값(row, column)을 입력하여 원하는 값을 불러올 수 있는 함수입니다.
  • ROW와 COLUMN은 자동채우기 기능과 함께 사용하여 1,2,3,4,5,6... 과 같이 연속된 숫자를 표현할 떄 유용합니다.

 

그리고 블로그에서 사진이 잘 보이도록 가로폭을 제한하다보니 [필터]를 [1행]에 못 걸고 [2행]에 걸게 되었습니다. 1행에 걸게 되면 콤보상자 단추가 열의 제목들을 다 가려버리기 때문입니다.

  • 이렇게 2행을 추가하여 필터를 걸 때는 2행을 비워놓으면 인접영역(CurrentRange) 인식에 문제가 발생합니다. 겉으로 보이지 않는 작은따옴표(') 를 추가하면 이는 해결됩니다.
  • 구체적인 방법은 별도로 포스팅하였습니다.

 

댓글