에어비앤비(airbnb) 숙소정보 프로그램 다운


동적 목록 수집 + 엑셀 저장 + EXE 배포까지 한 번에 정리

에어비앤비에서 숙소를 검색하고 비교할 때, 가장 시간이 많이 드는 작업은 결국 이거죠.

  • 숙소명 복사

  • 가격 정리

  • 평점/후기 체크

  • 위치(주소/지역) 비교

  • 링크 모아서 엑셀 정리

이걸 매번 손으로 하면 1시간이 순식간에 사라집니다.

그래서 이번에 정리한 프로젝트는
✅ 에어비앤비 숙소 목록을 동적 크롤링으로 수집하고
✅ 엑셀로 저장하며
✅ 배포용 실행 파일(EXE)까지 만드는 데스크톱 앱입니다.

“한 번 만들어두면 다음부터는 클릭 몇 번으로 숙소 리서치가 끝나는 자동화”

 

크롤러 다운하기👆



✅ 이 글을 읽으면 얻는 것 (결론부터)

이 글 하나로 아래 내용을 한 번에 정리할 수 있습니다.

  • 에어비앤비 크롤러 전체 프로젝트 구조

  • DOM 구조 변경 시 어디를 고치면 되는지

  • 가격/평점/주소 누락 방지 로직 핵심

  • 크롤링 속도 개선(페이지당 JS 1회 수집)

  • PyInstaller EXE 빌드 + Inno Setup 설치 파일까지

👉 즉, “나중에 다시 만들 필요 없이”
이 문서만 보고 한 번에 개발/수정 가능한 상태로 맞춰둔 가이드입니다.


1) 에어비앤비 크롤러 프로젝트 개요

이 프로젝트는 에어비앤비(airbnb.co.kr) 숙소 목록을 대상으로 합니다.

📌 주요 기능

  • 에어비앤비 홈페이지 접속

  • 사용자가 검색/필터 적용

  • 숙소 목록에서 아래 항목 수집
    숙소명 / 가격 / 평점 / 주소(위치) / 링크

  • 엑셀(xlsx)로 저장

실행 방식

  • python main.py : 기본 실행(= GUI)

  • python main.py --console : 터미널 전용 실행

  • python gui_app.py : GUI만 단독 실행

브라우저

  • Chrome 기본

  • Edge도 지원 가능


2) 프로젝트 구조 (유지보수 최적화)

이 크롤러의 장점은 “코드가 길지 않으면서도, 수정 지점이 명확하다”는 것입니다.

RealEstate/ ├── main.py # 크롤링 엔진 (브라우저/수집/엑셀) ├── gui_app.py # tkinter GUI (3버튼) ├── requirements.txt ├── requirements-build.txt ├── build_exe.spec ├── build.bat ├── AirbnbCrawler.iss ├── build_installer.bat ├── dist/ ├── output/ └── wdm_drivers/

📌 main.py = 엔진
📌 gui_app.py = 조작 패널(버튼 UI)
📌 build 파일들 = 배포 자동화

이 구조 덕분에 “고치고 싶은 부분”이 생겨도
전체를 뜯어고치지 않고 빠르게 수정할 수 있습니다.


3) 수집되는 데이터 (엑셀 저장 포맷)

엑셀 저장 시 핵심은 “리서치에 필요한 데이터만 깔끔하게”입니다.

항목 예시
숙소명 부산의 집
가격(총액만) ₩605,965
평점/후기 5.0 (9)
주소/위치 동글하우스 | 도보 6분 | 3월 2일~7일
링크 https://www.airbnb.co.kr/rooms/12345678

📌 엑셀은

  • 첫 행 고정

  • 가운데 정렬

  • 리스트 형태로 저장됩니다.


4) 에어비앤비 크롤링이 어려운 이유 (동적 DOM)

에어비앤비는 단순 HTML이 아닙니다.

  • 스크롤/페이지 이동 시 DOM이 계속 바뀜

  • 카드 구조가 자주 변경됨

  • 가격/평점/주소가 카드 안에 있기도 하고 밖에 있기도 함

  • “원래 요금” / “총액” 표기 방식이 섞여 있음

그래서 이 프로젝트는
선택자 기반 크롤링 + 고속 JS 스크립트 수집 + fallback 로직을 같이 씁니다.


5) 핵심 로직 3가지 (이것만 이해하면 유지보수 끝)

5-1) 카드 컨테이너를 제대로 잡는 것이 핵심

에어비앤비는 “숙소 링크만 잡아서는” 정보가 누락됩니다.

그래서 링크에서 부모로 올라가며 아래 순서로 카드 컨테이너를 찾습니다.

  1. data-testid="listing-card"

  2. data-testid="card-container"

  3. price-availability-row가 1개인 가장 좁은 조상

📌 이 구조가 중요한 이유는
카드 경계가 틀리면 가격/평점/주소가 카드 밖으로 빠져 누락되기 때문입니다.


5-2) 가격은 “총액만” 저장 (원래 요금 제외)

이 크롤러는 가격을 “가장 깔끔한 기준”으로 저장합니다.

✅ 저장 규칙: 총액 또는 화면에 표시된 실제 금액만

예시:

  • "총액 ₩929,831, 원래 요금 ₩1,017,031"
    → 저장: ₩929,831

  • "₩679,000 · 5박, 원래 요금 ₩920,957"
    → 저장: ₩679,000

  • "원래 요금 ₩920,957" 만 있는 경우
    저장하지 않음(제외)

👉 이 기준 덕분에 엑셀에서 가격 비교가 훨씬 깔끔해집니다.


5-3) 평점은 “5.0 (9)” 표시 형식을 최우선으로

평점은 가능한 한 사용자가 눈으로 보는 형태 그대로 저장합니다.

우선순위는 아래 방식입니다.

  1. "5.0 (9)" 형태

  2. 짧은 평점 텍스트

  3. "평점 N점, 후기 N개" 형태

  4. 최후 fallback으로 카드 텍스트에서 패턴 검색

📌 덕분에 “평점 누락”이 줄고
실제 비교에 바로 쓸 수 있는 형태로 저장됩니다.


6) 속도 개선: 페이지당 JS 1회 수집 방식

이 프로젝트의 강점 중 하나는 속도입니다.

일반 Selenium 방식은

  • 요소 하나 찾고

  • 텍스트 뽑고

  • 다음 요소 찾고…
    이걸 반복해서 느려집니다.

하지만 이 크롤러는
execute_script()페이지당 1회만 실행해서
카드 정보를 한 번에 수집합니다.

그리고 실패하면 자동으로
SELECTORS 기반 fallback으로 전환합니다.

👉 “빠르게 수집 + 실패해도 살아남는 구조”로 설계된 셈입니다.


7) 배포용 실행 파일(EXE) 만들기 (초간단 정리)

이제 가장 중요한 파트입니다.
다른 PC에서도 클릭만으로 실행되는 프로그램으로 만드는 방법입니다.


7-1) 실행 파일 빌드 방법 (Windows)

방법 A) build.bat 더블클릭

  • PyInstaller 없으면 자동 설치 후 빌드

  • 완료되면 아래 파일 생성
    dist\AirbnbCrawler.exe

방법 B) 터미널 직접 실행

cd d:\AGENT_AI\CURSOR\RealEstate python -m pip install pyinstaller python -m PyInstaller --noconfirm build_exe.spec

📌 “액세스 거부”가 뜨면?

  • exe 실행 중이면 종료

  • dist 폴더 비우고 다시 빌드

  • build.bat을 관리자 권한으로 실행


7-2) 설치 파일 만들기 (Setup.exe)

실행 파일만 배포해도 되지만,
“설치형 프로그램”으로 주고 싶다면 Inno Setup을 사용합니다.

설치 파일 생성 순서

  1. Inno Setup 설치

  2. build_installer.bat 실행
    output\AirbnbCrawler_Setup.exe 생성

👉 고객/팀원 배포용으로 가장 깔끔한 형태입니다.


8) 사용자 입장에서 사용 방법 (진짜 쉬움)

  1. AirbnbCrawler.exe 실행

  2. 최대 크롤링 페이지 수 입력(1~20)

  3. [홈페이지 접속] 클릭

  4. 브라우저에서 검색/필터 적용

  5. [크롤링 시작] 클릭

  6. [엑셀 저장] 클릭 → 파일 저장

📌 첫 실행 시
exe 폴더에 wdm_drivers가 생성되고 ChromeDriver가 자동 설치됩니다.


9) 자주 발생하는 문제 해결(FAQ)

Q1. 가격/평점/주소가 누락돼요

→ 카드 컨테이너가 좁게 잡히는 경우가 많습니다.
_get_card_container()에서 card-container 포함 여부를 먼저 확인하세요.

Q2. 행이 어긋나요

→ 카드 탐색 순서를 아래로 유지해야 안정적입니다.
listing-card → card-container → price-availability-row 1개 조상

Q3. base_library.zip.wdm 오류가 떠요

→ exe 환경에서 WDM 캐시 설정이 꼬인 케이스입니다.
DriverCacheManager와 캐시 경로 처리 여부를 점검하세요.

Q4. 크롬드라이버 버전이 안 맞아요

wdm_drivers 폴더 삭제 후 재실행하면 자동 재다운로드됩니다.

Q5. 백신이 exe 실행을 막아요

→ 예외 처리 등록이 필요할 수 있습니다.


10) 결론: 숙소 리서치를 “클릭 몇 번”으로 끝내는 자동화

에어비앤비 숙소 리서치는
데이터가 많아질수록 “노가다”가 됩니다.

하지만 이 프로젝트는

✅ 동적 크롤링으로 숙소 목록 수집
✅ 가격(총액만) / 평점 / 주소 / 링크 정리
✅ 엑셀 저장
✅ EXE 배포까지 완료

즉, 한 번 만들면 계속 써먹는 자동화 자산이 됩니다.


📌 CTA (문의/커스터마이징/제작 의뢰)

여기까지 읽으셨다면
당신에게도 이런 니즈가 있을 확률이 높습니다.

  • “내가 원하는 조건만 필터링해서 수집하고 싶다”

  • “주소를 더 정확하게 뽑고 싶다”

  • “상세페이지까지 들어가서 옵션/편의시설도 저장하고 싶다”

  • “구글시트/Airtable로 자동 저장되게 하고 싶다”

  • “내 PC에서 바로 실행되는 EXE로 받고 싶다”

✅ 원하시면 제가 이 크롤러를 당신 목적에 맞게 커스터마이징해서
바로 배포 가능한 형태(EXE/설치파일)로 만들어드릴게요.

👉 댓글/메시지로 아래 2가지만 보내주세요.

  1. 수집할 항목(예: 숙소명/가격/평점/주소/링크 + 추가 항목)

  2. 목표(리서치/업무/보고/공유/자동화)


크롤러 다운하기👆

힐링타임

SoulLatte에 오신 것을 환영합니다. 이곳은 바쁜 일상 속 작은 휴식과 따뜻한 위로가 되어줄 부드러운 글이 있는 공간입니다. 마치 진한 라떼 한 잔을 마시듯, 지친 마음을 달래고 영감을 얻을 수 있는 이야기를 나누고자 합니다. SoulLatte는 마음 깊은 곳의 이야기를 나누는 작은 카페 같은 공간으로, 일상에서 만나는 소소한 행복과 삶의 통찰을 담아냅니다. 인생의 쓴맛과 단맛을 모두 음미하며, 여러분과 함께 따뜻한 위로와 격려를 나누고 싶습니다. 바쁜 하루의 끝, SoulLatte에서 마음을 잠시 쉬어가세요. 부드럽게 당신의 마음을 어루만지는 이야기가 기다리고 있습니다.

다음 이전