[토이 프로젝트] K카 중고차 동적 크롤링 및 Streamlit 대시보드 배포
🚀 서비스 실행 링크: https://youtu.be/HnL0wOqci7Q 안녕하세요.파이썬과 데이터 분석에 관심이 많은 '잡학다식 개발자'입니다. K카 중고차 데이터를 수집하여 감가율을 시각화하는 대시보드 프로젝트를 진행하며 겪은,교과서적 이론과 실제 배포 환경의 간극에 대해 공유하고자 합니다. 보통 입문 강의에서는 requests와 BeautifulSoup을 이용한 정적 스크래핑을 배우지만,실제 상용 웹사이트는 동적 렌더링과 보안으로 겹겹이 막혀 있습니다. 이를 해결하기 위해 Playwright를 도입했습니다. 또한 구형 requirements.txt 대신요즘 파이썬 생태계 표준인 pyproject.toml을 도입하여 패키지 의존성을 명확하게 관리했습니다. 특히 Streamlit Cloud 배포 시 리눅스 컨테이너의 샌드박스 제약으로 브라우저가 뻗어버리는 현상을아래와 같이 Headless 옵션으로 우회했습니다. Python# kcar_headless_scraper.py import os from playwright.sync_api import sync_playwright def fetch_car_prices(): # Streamlit Cloud 환경에서 Playwright용 브라우저 강제 설치 os.system("playwright install chromium") with sync_playwright() as playwright_instance: # 이론적인 일반 스크래핑과 달리, 실제 클라우드 서버 환경에서는 # 샌드박스 충돌 및 메모리 부족 현상으로 인한 에러가 발생합니다. # 이를 우회하기 위한 현업의 필수 headless 옵션 세팅입니다. browser_instance = playwright_instance.chromium.launch( headless=True, args=[ '--no-sandbox', '--disable-dev-shm-usage' ] ) # 보안이 적용된 동적 페이지 렌더링 대기 및 데이터 추출 page_instance = browser_instance.new_page() page_instance.goto("https://www.kcar.com") # ... (중략: 데이터 크롤링 로직) ... browser_instance.close() return [] 파이썬 크롤러 배포를 공부하시는 분들께 도움이 되기를 바랍니다.