500줄에서 150줄로: Amazon 스크래퍼를 Scrapy 프로젝트로 리팩토링한 방법
프로그래밍/소프트웨어 개발
웹 개발
대상자
- 웹 스크래핑 개발자: 스크래핑 스크립트의 유지보수성 개선 및 도구 활용 방법
- 난이도: 중간 수준 (Scrapy 기초 지식 필요)
핵심 요약
- Scrapy 프레임워크를 사용하여 단일 스크립트를 모듈화된 프로젝트로 리팩토링
- ScrapeOps 통합으로 프록시 관리 및 실시간 모니터링 자동화
- 코드 줄 수 534 → 150 줄 감소, 성공률 70% → 95% 향상
섹션별 세부 요약
1. 기존 스크립트의 문제점
- 수동 프록시 관리 및 에러 처리로 인한 복잡성 증가
- 수동 크롤링 로직으로 인한 유지보수 어려움
- CSV 내보내기 및 가격 추출 로직의 비결정성
2. Scrapy 프로젝트 구조
- 모듈화된 스파이더 분리 (Search Spider, Product Spider)
- settings.py에서 중앙 집중식 설정 관리
- requirements.txt로 의존성 관리
3. Scrapy 및 ScrapeOps의 핵심 기능
- Scrapy 제공 기능:
- 자동 재시도 (exponential backoff)
- 동시 요청 및 요청 제한
- 다중 포맷 내보내기 (CSV, JSON)
- ScrapeOps 제공 기능:
- 프록시 회전 및 IP 관리
- 실시간 모니터링 대시보드
- 요청 성공률 추적
4. 리팩토링 전후 비교
- 코드 줄 수: 534 → 150 줄
- 성공률: 70% → 95%
- 디버깅 시간: 시간 → 분 단위로 감소
- 확장성: 제한적 → 무제한
결론
- Scrapy + ScrapeOps 통합을 통해 유지보수성과 확장성을 극대화
- 프록시 관리 및 실시간 모니터링은 ScrapeOps의 무료 계층으로도 가능
- 프로젝트 초기 설정:
git clone
,pip install -r requirements.txt
,scrapy crawl
명령어 실행