암호화폐 관련 뉴스와 경제지표를 자동으로 수집하여 MongoDB에 저장하는 Docker 기반 크롤링 시스템입니다.
-
뉴스 크롤러 (
naver_news_crawler.py)- 네이버 뉴스에서 암호화폐 관련 기사 수집
- 키워드: 비트코인, 리플, 이더리움 등
-
경제지표 크롤러 (
economic_indicator_crawler.py)- 한국투자증권(kr.investing.com)에서 경제지표 수집
- 대상 국가: 미국, 한국, 일본, 중국
- 런타임: Python 3.10 + Docker
- 웹 스크래핑: Selenium + BeautifulSoup4
- 데이터베이스: MongoDB
- 스케줄링: Cron
- Docker 설치
- MongoDB 컨테이너 실행 중
# MongoDB 컨테이너 실행
docker run -d --name mongodb -p 27017:27017 mongo:6.0# 1. 크롤러 이미지 빌드
docker build -t crawler .
# 2. 크롤러 실행 (MongoDB와 연결)
docker run -d --name crawler --link mongodb:mongodb crawler# 뉴스 크롤러만 실행
docker run --rm --link mongodb:mongodb crawler python /app/naver_news_crawler.py
# 경제지표 크롤러만 실행
docker run --rm --link mongodb:mongodb crawler python /app/economic_indicator_crawler.py수집 대상: 네이버 뉴스 암호화폐 관련 기사 키워드: 비트코인, 리플, 이더리움
수집 정보:
- 제목, 요약, 언론사, 발행시간
- 기사 URL, 이미지 URL
- 매칭된 키워드 배열
수집 대상: 한국투자증권 경제지표 데이터 날짜 범위: 어제부터 60일 후까지 국가: 미국, 한국, 일본, 중국
수집 정보:
- 지표명, 실제값, 예상값, 이전값
- 발표일시, 중요도, 국가/통화
- UUID, 생성/수정 시간
{
"news_uuid": "uuid",
"title": "기사 제목",
"summary": "기사 요약",
"publisher": "언론사",
"url": "기사 URL",
"date": "발행일시 (ISO 8601)",
"img_url": "이미지 URL",
"keywords": ["비트코인", "이더리움"]
}{
"economic_uuid": "uuid",
"date": "2025-08-24",
"time": "09:00",
"country": "한국",
"currency": "KRW",
"indicator_name": "소비자물가지수 (YoY)",
"actual_value": "2.1%",
"forecast_value": "2.0%",
"previous_value": "2.2%",
"importance": 2,
"importance_text": "Medium",
"source": "kr.investing.com",
"created_at": "ISO 시간",
"updated_at": "ISO 시간"
}- 뉴스: URL 기준 중복 방지, TTL(24시간)
- 경제지표: 날짜+시간+국가+지표명 복합 인덱스, TTL(1년)
- 뉴스 크롤러: 매시간 (
0 * * * *) - 경제지표 크롤러: 매일 자정 (
0 0 * * *)
컨테이너 시작 시 두 크롤러가 각각 1회씩 실행된 후 크론 모드로 전환
# 크롤러 전체 로그
docker logs crawler
# 실시간 로그 모니터링
docker logs -f crawler
# 크론 로그 확인
docker exec crawler tail -f /var/log/cron.log# MongoDB 컨테이너 접속
docker exec -it mongodb mongosh
# 데이터베이스 선택 및 확인
use crame
show collections
db.economic_indicator.countDocuments()
db.economic_indicator.find().limit(5)# 실행 중인 컨테이너 확인
docker ps
# 컨테이너 리소스 사용량
docker stats crawler mongodbTZ=Asia/Seoul: 시간대 설정
- 뉴스: 24시간 후 자동 삭제 (TTL)
- 경제지표: 1년 후 자동 삭제 (TTL)
- 뉴스: URL 기준 중복 시 키워드만 업데이트
- 경제지표: 날짜+시간+국가+지표명 기준 중복 시 값 업데이트
- MongoDB 연결 실패: MongoDB 컨테이너 실행 상태 확인
- 크롤링 실패: 웹사이트 구조 변경 또는 차단 확인
- 메모리 부족: Docker 리소스 할당량 증가
# 크롤러 컨테이너 내부 접속
docker exec -it crawler bash
# Python 스크립트 직접 실행
python /app/naver_news_crawler.py
python /app/economic_indicator_crawler.py개발 환경: macOS + Docker Desktop
배포 환경: Linux Docker + MongoDB
데이터 활용: 암호화폐 시장 분석을 위한 뉴스/경제지표 수집
- 기준금리, 콜금리, CD금리, 국고채 수익률(1~10년), 회사채 수익률, 통화량(M1, M2 등)
- 소비자물가지수, 생산자물가지수, 근원물가, 수출입물가지수
- 원/달러, 원/엔, 원/유로, 원/위안 환율, 외환보유액
- GDP, 산업생산지수, 설비투자지수, 건설기성액
- 수출액, 수입액, 무역수지, 경상수지
- 실업률, 고용률, 경제활동참가율, 취업자수
- 소비심리, 투자심리, 자산시장, 금융여신, 글로벌 자금 지표 등