지난 포스팅에서 이어집니다.
[Project] DE Toy Project - 데이터 수집(쿠팡 상품 리뷰 크롤링) 1
지난 포스팅에서 이어집니다. [Project] DE Toy Project - 데이터 수집(네이버 쇼핑 리뷰 크롤링 삽질하기)1. 프로젝트 주제이번 프로젝트의 목표는 사용자가 검색한 상품에 대한 준 실시간 리뷰 요약
tjlog-tistory.tistory.com
이번 포스팅에서는 쿠팡 크롤링과 병렬 처리를 구현한 내용과 소소한 팁을 작성했습니다.
1. 프로젝트 목표
이번 프로젝트는 쿠팡 상품의 기본 정보 및 리뷰 데이터를 수집하여, 이후 텍스트 분석을 위한 데이터 파이프라인을 구축하는 과정을 정리한 기록입니다. 단순 크롤링이 아닌 병렬 처리, 데이터 저장, 후속 분석 작업까지 연결된 전체 흐름을 목표로 삼았습니다.
2. 환경 및 수집 데이터
2.1 사용한 로컬 PC 사양
- window 11
- 8코어 CPU
- 32GB RAM
2.2 수집한 데이터
- 상품 정보
- 상품명, 가격, 카테고리, 상품 코드, 별점 등
- 리뷰 정보
- 작성자, 날짜, 별점, 리뷰 본문
3. 크롤링 및 병렬 처리 파이프라인
⚠️ 크롤링 전 주의사항
- 쿠팡은 크롤링을 기본적으로 차단하고 있습니다.
- 잘못된 방식의 접근은 법적 문제가 발생할 수 있으며, 본 프로젝트는 순수 학습 목적의 연구로, 데이터는 상업적으로 사용하지 않습니다.
- 크롤링 속도 제한, 접속 주기 조절, 정중한 접근 방식 준수 등 사이트에 무리가 가지 않는 범위 내에서 작업을 수행했습니다.
3.1 크롤링 단계별 흐름
- 상품 기본 정보 추출
- 상품명, 가격, 카테고리, 상품 코드, 별점, 리뷰 수 등
- 상품 기본 정보 저장
- 로컬에 CSV 형태 저장 (추후 Google Cloud SQL 이관 예정)
- 리뷰 추출
- 작성자, 날짜, 별점, 리뷰 내용 등
- 리뷰 저장
- 로컬에 parquet 포맷으로 저장 (추후 Google Cloud Storage 업로드 예정)
3.2 병렬 처리 흐름
- 검색어로 쿠팡에서 상품 검색
- 검색 결과의 상품 URL 리스트 추출
- 추출된 URL 리스트를 4개의 멀티 프로세스에 분배
- 각 프로세스가 해당 URL에서 크롤링 진행 (상품 정보 + 리뷰)
3.3 구현 코드
https://github.com/ih-tjpark/DE_Toy_Project/tree/main/crawling_api/crawling
DE_Toy_Project/crawling_api/crawling at main · ih-tjpark/DE_Toy_Project
data engineering toy project. Contribute to ih-tjpark/DE_Toy_Project development by creating an account on GitHub.
github.com
4. 크롤링 & 병렬 처리 꿀팁 정리
4.1 크롤링 팁
- 정적 vs 동적 컨텐츠 구분
- HTML 소스에 바로 보이면 정적 → requests도 가능 (하지만 대부분 대형 사이트는 requests 요청 차단)
- 스크립트로 로딩된다면 동적 → Selenium or playwright 같은 web driver 필수
- CSS_SELECTOR 사용 권장
- XPath는 페이지 구조 변경에 취약
- 동적 요소 로딩 대기
- time.sleep() 또는 WebDriverWait()으로 적절한 시간 대기
- IP 차단 피하기
- 대형 사이트는 Cloud IP, VPN, Proxy, 비정상 헤더는 차단됨
- time.sleep을 특정 시간이 아닌 random 시간으로 주기
- selenium으로 접속 불가할 경우 undetected seleinum 사용해보는 것 추천
- User-Agent 변경 필수 (fake-useragent 사용 추천)
4.2 병렬 처리 팁
- 프로세스 수는 CPU 기준으로 설정
- 일반적으로 CPU 개수 - 1 또는 CPU // 2
- 프로세스 종료는 finally에서 명시
- 프로세스 종료 시점에 확실하고 안전하게 리소스 회수 해야함
- 값 공유는 Manager, Queue 사용
- 상태 공유 및 작업 진행 체크 가능
- Selenium Driver 경로 명시 필수
- Selenium 사용하는 멀티프로세싱은 Driver 경로 명시 안하면 충돌 가능성 높음
- 성능 모니터링 도구
- time.perf_counter() → 실행 시간
- psutil → CPU 사용량
- top, htop → 실시간 리소스 확인
5. 앞으로 해야 할 일
🔍 데이터 분석 모델 구상
- 텍스트 요약 모델 구상
- 감정 분석 모델 구상
🛠️ 데이터 처리
- Spark 기반 데이터 전처리
- 모델 인풋 포맷에 맞는 텍스트 정제 및 분류
🌐 Web 구현
- FastAPI 기반 Backend 서버 구성
- 간단한 Front 화면 구성 → 분석 결과 시각화 예정
6. 결론 및 후기
크롤링, 병렬 처리, 데이터 저장까지 이어지는 데이터 파이프라인의 전체 흐름을 로컬 환경 기반으로 구현해보면서, 단순한 수집 이상의 엔드 투 엔드 구성 경험을 쌓을 수 있었습니다. 또한 병렬처리를 통해 최소 4배 이상의 수집 속도 향상을 체감할 수 있었습니다. 앞으로 적절한 상황에서 병렬처리를 적용할 수 있도록 좀 더 경험을 쌓아가야겠습니다.
다음에는 분석 모델 테스트, Spark를 활용해 모델 인풋에 맞는 처리 작업과 분석 결과에 대한 처리 작업 등을 진행해보겠습니다.
'Project' 카테고리의 다른 글
[Project] DE Toy Project - 팀 프로젝트 회고 및 고도화 계획 (0) | 2025.07.03 |
---|---|
[Project] 실시간 쿠팡 리뷰 분석 with Hybrid Cloud (클라우드 아키텍쳐 솔루션 교육과정) (0) | 2025.07.01 |
[Project] DE Toy Project - 데이터 분석(분석 모델 테스트) (2) | 2025.06.25 |
[Project] DE Toy Project - 데이터 수집(쿠팡 상품 리뷰 크롤링) 2 (2) | 2025.06.05 |
[Project] DE Toy Project - 데이터 수집(네이버 쇼핑 리뷰 크롤링 삽질하기) 1 (0) | 2025.05.30 |