동적 목록 수집 + 엑셀 저장 + 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) 프로젝트 구조 (유지보수 최적화)
이 크롤러의 장점은 “코드가 길지 않으면서도, 수정 지점이 명확하다”는 것입니다.
📌 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) 카드 컨테이너를 제대로 잡는 것이 핵심
에어비앤비는 “숙소 링크만 잡아서는” 정보가 누락됩니다.
그래서 링크에서 부모로 올라가며 아래 순서로 카드 컨테이너를 찾습니다.
-
data-testid="listing-card" -
data-testid="card-container" -
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)” 표시 형식을 최우선으로
평점은 가능한 한 사용자가 눈으로 보는 형태 그대로 저장합니다.
우선순위는 아래 방식입니다.
-
"5.0 (9)"형태 -
짧은 평점 텍스트
-
"평점 N점, 후기 N개"형태 -
최후 fallback으로 카드 텍스트에서 패턴 검색
📌 덕분에 “평점 누락”이 줄고
실제
비교에 바로 쓸 수 있는 형태로 저장됩니다.
6) 속도 개선: 페이지당 JS 1회 수집 방식
이 프로젝트의 강점 중 하나는 속도입니다.
일반 Selenium 방식은
-
요소 하나 찾고
-
텍스트 뽑고
-
다음 요소 찾고…
이걸 반복해서 느려집니다.
하지만 이 크롤러는execute_script()를 페이지당 1회만 실행해서
카드 정보를 한 번에 수집합니다.
그리고 실패하면 자동으로
SELECTORS 기반 fallback으로 전환합니다.
👉 “빠르게 수집 + 실패해도 살아남는 구조”로 설계된 셈입니다.
7) 배포용 실행 파일(EXE) 만들기 (초간단 정리)
이제 가장 중요한 파트입니다.
다른 PC에서도 클릭만으로 실행되는 프로그램으로 만드는 방법입니다.
7-1) 실행 파일 빌드 방법 (Windows)
방법 A) build.bat 더블클릭
-
PyInstaller 없으면 자동 설치 후 빌드
-
완료되면 아래 파일 생성
✅dist\AirbnbCrawler.exe
방법 B) 터미널 직접 실행
📌 “액세스 거부”가 뜨면?
-
exe 실행 중이면 종료
-
dist 폴더 비우고 다시 빌드
-
build.bat을 관리자 권한으로 실행
7-2) 설치 파일 만들기 (Setup.exe)
실행 파일만 배포해도 되지만,
“설치형
프로그램”으로 주고 싶다면 Inno Setup을 사용합니다.
설치 파일 생성 순서
-
Inno Setup 설치
-
build_installer.bat실행
→output\AirbnbCrawler_Setup.exe생성
👉 고객/팀원 배포용으로 가장 깔끔한 형태입니다.
8) 사용자 입장에서 사용 방법 (진짜 쉬움)
-
AirbnbCrawler.exe실행 -
최대 크롤링 페이지 수 입력(1~20)
-
[홈페이지 접속] 클릭
-
브라우저에서 검색/필터 적용
-
[크롤링 시작] 클릭
-
[엑셀 저장] 클릭 → 파일 저장
📌 첫 실행 시
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가지만 보내주세요.
-
수집할 항목(예: 숙소명/가격/평점/주소/링크 + 추가 항목)
-
목표(리서치/업무/보고/공유/자동화)
.png)
