크롤링된 뉴스는 자동으로 3가지 형식으로 저장됩니다:
- CSV 파일 - 데이터 분석용
- SQLite 데이터베이스 - 구조화된 쿼리용
- 텍스트 파일 - 원본 뉴스 보관용
cd src/crawlers
python run_crawlers.py --mode all --articles 50결과:
- ✅ CSV:
data/regional_news.csv - ✅ DB:
data/news.db - ✅ 텍스트:
data/articles/[지역]/*.txt
python run_crawlers.py --mode region --region 서울 --articles 30# CSV만 저장 (데이터베이스, 텍스트 파일 제외)
python run_crawlers.py --mode all --no-save-db --no-save-text
# 데이터베이스만 저장
python run_crawlers.py --mode all --save-db# PowerShell에서
Import-Csv data/regional_news.csv | Select-Object -First 10 | Format-Table# SQLite 설치 필요
sqlite3 data/news.db
# SQL 쿼리
SELECT region, COUNT(*) FROM news GROUP BY region;
SELECT title, source FROM news WHERE region='서울' LIMIT 5;
.quit# 인덱스 파일 확인
cat data/articles/index.txt
# 특정 기사 읽기
cat data/articles/서울/20260223_*.txtimport pandas as pd
df = pd.read_csv('data/regional_news.csv')
print(df.head())
print(df.groupby('region').size())import sqlite3
conn = sqlite3.connect('data/news.db')
# 서울 지역 뉴스
df = pd.read_sql_query(
"SELECT * FROM news WHERE region='서울'",
conn
)
print(df)
conn.close()import os
# 서울 지역 텍스트 파일들
seoul_dir = 'data/articles/서울'
for filename in os.listdir(seoul_dir):
filepath = os.path.join(seoul_dir, filename)
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
print(content[:200]) # 처음 200자data/
├── regional_news.csv # CSV 파일
├── news.db # SQLite 데이터베이스
├── articles/ # 텍스트 파일들
│ ├── index.txt # 전체 인덱스
│ ├── 서울/
│ │ ├── 20260223_143022_기사제목1.txt
│ │ └── 20260223_143023_기사제목2.txt
│ ├── 경기도/
│ │ └── ...
│ └── 강원도/
│ └── ...
└── DATABASE_GUIDE.md # 데이터베이스 가이드
# 1. 데이터베이스에서 지역별로 읽기
# 2. KoBERT로 감성 분석
# 3. 결과를 다시 데이터베이스에 저장# 1. 텍스트 파일 읽기
# 2. TF-IDF로 키워드 추출
# 3. 지역별 TOP 10 키워드 생성# 1. CSV 또는 DB에서 날짜별 데이터 로드
# 2. 시간대별 뉴스 감성 변화 분석
# 3. Plotly로 시각화- 용량 관리: 텍스트 파일은 용량이 클 수 있으므로 필요시
--no-save-text옵션 사용 - 중복 방지: 데이터베이스는 URL 기준으로 중복을 자동 제거
- 백업: 정기적으로
data/폴더를 백업하세요
Happy Analyzing! 📊