티스토리 뷰

반응형

앞선 포스팅에 이어 약 1년이 지난 시점에 관련 질문이 있는 듯 하여 각 과정을 

아래와 같은 단계로 포스팅하려고 합니다.

https://cocoabba.tistory.com/42

 

[PYTHON] 네이버 부동산 상가 매물 크롤링하기

개인적으로 대학교 시절 컴퓨터 공학과를 나왔다는 점, 그 동안 개발 업무를 해오진 않았지만 대학교 시절이 기억을 되새기면 최근 파이썬 스크립트 작성에 재미를 붙이고 있는 중에 있다. 그

cocoabba.tistory.com

1. 개발자 도구를 활용한 웹페이지에 대한 분석 -> PC 웹 페이지에 대한 분석
2. 개발자 도구를 활용한 웹페이지에 대한 분석 -> 모바일 페이지에 대한 분석

3. 분석한 데이터를 활용한 페이지 요청 : 그룹(단지) 정보 / 물건정보 추출
4. Tkinter 를 활용한 GUI 프로그램 제작

1. 개발자 도구를 활용한 PC 웹페이지에 대한 분석

 

먼저 네이버부동산 페이지에서 간단하게 지역명을 입력하고, 해당 페이지에서 어떤 정보들을 볼 수 있는지 확인해보자. 아래는 네이버부동산(https://land.naver.com/)에서 "부천시 옥길동" 이란 지역을 검색한 후 검색을 "상가.업무.공장.토지" 선택한 후 상가 구분을 "상가" 로 선택하고, 매매구분을 "매매" 로 선택했을 때 화면이다. 해당 조건의 경우, 검색되는 물건은 151개로 확인 할 수 있다. 

 

우리의 목적은 여기에서 확인할 수 있는 151개의 상가의 각 정보를 추출하는 데 있다.

[그림1] "부천시 옥길동" 상가 & 매매 조건의 상가 매물 수

 

그럼 여기에서 실제 데이터는 어떻게 보이는지 개발자도구를 통해서 확인해보자.

'F12' 을 통해 접근하거나 "기타" -> "고급기능" 을 통해 "개발자 도구"에 접근 할 수 있다. 

 

개발자 도구를 켜 놓고 방금 했던 동일한 행위를 해보면 인터넷 상에서 내가 원하는 데이터가 어디에 있는지 확인해볼 수 있다. 아무런 다른 액션을 하지 않고 단순히 "부천시 옥길동" 키워드만을 검색했는데 아래와 같이 105번의 requests 가 있었다. 

[그림 2] "부천시 옥길동" 검색 시 requests 수

여기에서 아파트로 되어 있는 구분은 상가로 선택하는 순간 트래픽은 두배로 늘어 아래와 같이 250여 requests 를 하는 것을 볼 수 있다. 데이터가 많을수록 우리가 분석해야 할 내용이 많아지므로 이 단계에서 우리는 트래픽을 멈추고 데이터를 살펴볼 수 있다.

 

[그림 3] "아파트"에서 "상가"로 물건 종류 변경 시 requests 수

이 단계에서 우린 개발자도구의 검색 기능을 활용하여, [그림1]에서 잠시 보였던 상가 매물에 있는 키워드를 통해 검색을 해보자. 필자는 첫번째 매물에 있는 키워드 "투자추천"으로 검색을 해 보았다.

 

[그림 4] "투자추천"으로 검색 시 요청하는 header Message

https://new.land.naver.com/api/articles?cortarNo=4119011500&order=rank&~

페이지로 검색과 관련한 몇가지 정보를 전달하여 결국은 아래와 같이 json 형태로 구성되어 있는 우리가 원하는 데이터에 접근할 수 있는 것을 볼 수 있다.

[그림 5] 검색결과로 찾은 json 형태의 상가 매물 목록 확인


자 그럼 여기에서 우린 아래와 같은 과정을 통해 특정 페이지를 요청하면 우리가 원하는 매물 목록을 확인 할 수 있음을 알 수 있다.

1. 네이버 부동산 페이지 접속 
2. 원하는 지역명 입력 예) "부천시 옥길동"
3. 지역명에 매핑되는 특정 URL 요청
  > https://new.land.naver.com/api/articles?cortarNo=4119011500&
                                            order=rank&
                                            realEstateType=SG&
                                            tradeType=A1
                                            &tag=::::::::&
                                            rentPriceMin=0&
                                            rentPriceMax=900000000&
                                            priceMin=0&
                                            priceMax=900000000&
                                            areaMin=0&
                                            areaMax=900000000&
                                            oldBuildYears&
                                            recentlyBuildYears&
                                            minHouseHoldCount&
                                            maxHouseHoldCount&
                                            showArticle=false&
                                            sameAddressGroup=false&
                                            minMaintenanceCost&
                                            maxMaintenanceCost&
                                            priceType=RETAIL&
                                            directions=&
                                            page=1&
                                            articleState
4. 호출되는 json 파일 파싱을 통해 원하는 정보로 excel 추출

거의 다 온 것 같다.

그럼 여기에서 핵심은 3번에서 지역명에 매핑되는 특정 URL 이 어떻게 생성되는지만 확인하면 될 것이다.

[그림 6] PC 웹 페이지 요청과정의 Fetch/XHR 데이터

데이터를 JSON 형태로 응답함에 따라 JSON 형식의 데이터를 요청하는 데이터를 확인할 수 있는 개발자 도구의 Fetch/XHR 데이터를 보면, 실제 물건의 세부 데이터를 요청/응답하는 정보를 확인 할 수 있다. 하지만, 앞선 request와 response 를 통해서 다음의 요청메시지를 구성하는 것은 말 처럼 쉽지 않다.

 

약 400여개의 requets 의 흐름에서 위에서 나오는 다양한 변수가 생성되는 과정을 이해해야 하고 각각의 정보가 어떤 정보를 의미하는지 이해해야 정확하게 원하는 데이터를 얻을 수 있다. 

 

이때 이렇게 복잡한 데이터를 좀 더 쉽게 볼 수 있는 방법 한가지가 바로 mobile 버전의 데이터를 확인해보는 것이다. 

스마트폰으로 네이버부동산에 접속하여 동일한 정보를 본다면? 그때도 이렇게 복잡한 데이터 표현될 것인가? 

저자는 이 포인트로 모바일 버전으로 동일한 데이터를 다시 확인해 보았다.

 

https://cocoabba.tistory.com/57

 

[PYTHON] 네이버 부동산 상가 매물 크롤링하기(2/6)

앞선 포스팅에서 파이선을 이용하여 네이버 부동산 상가 매물 크롤링을 하기 위한 첫 단계로 개발자도구를 활용하여 PC 웹 페이지에 접근하여 과정 별 데이터를 확인하였다. 원하는 데이터가 jso

cocoabba.tistory.com

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함