게시판 댓글 데이터를 수집하여 사용자별 활동 시간(KST) 을 분석하고, 비정상적인 활동 패턴을 탐지하는 프로젝트입니다.
Hacker_Programing_Homework/
└── 사용자_시간_분석/
├── crawler.py # 게시글/댓글 수집
├── analyze.py # 활동 시간 분석 및 이상 탐지
├── data/ # 수집 및 분석 결과 저장
└── charts/ # 사용자별 활동 시간 차트
- Python 3.10 이상 권장
- Windows / Linux / macOS 모두 실행 가능
프로젝트 폴더로 이동한 뒤 아래 명령어를 실행합니다.
pip install requests pandas matplotlib beautifulsoup4또는 requirements.txt가 있다면:
pip install -r requirements.txtcrawler.py를 실행하여 게시글과 댓글 데이터를 수집합니다.
python crawler.py/post/1 ~ /post/100게시글 수집/comments/{post_id}댓글 API 수집- 게시글 제목, 작성자, 내용 저장
- 댓글 작성자, 내용, 작성 시간 저장
data/
├── posts.csv
└── comments.csv
수집된 데이터를 기반으로 활동 시간을 분석합니다.
python analyze.py- 댓글 작성 시간(KST) 추출
- 사용자별 시간대 활동량 계산
- 사용자별 활동 차트 생성
- 활동 통계 계산
- 비정상 사용자 탐지
data/
├── activity_table.csv
└── user_summary.csv
charts/
├── 김도현.png
├── 김미숙.png
├── ...
└── 홍선영.png
| 사용자 | 0시 | 1시 | ... | 23시 |
|---|---|---|---|---|
| 김도현 | 0 | 0 | ... | 0 |
| 김미숙 | 2 | 5 | ... | 6 |
각 사용자에 대해 시간대별 댓글 작성 빈도를 히스토그램 형태로 저장합니다.
예시 파일:
charts/김도현.pngcharts/오지영.pngcharts/김준호.png
- 0시부터 23시까지 모든 시간대에 댓글이 존재하는 경우
- 한 시간 동안 댓글이 30개 이상
- 그리고 해당 시간이 전체 댓글의 50% 이상을 차지하는 경우
- 연속된 3시간 동안 각각의 시간대에서 댓글 수가 20개 이상인 경우
탐지된 사용자는 콘솔에 다음과 같이 출력됩니다.
[의심 사용자] 김준호
- 24시간 모든 시간대에서 활동
[의심 사용자] 윤중수
- 12시에 댓글 70개 (전체의 100.0%)
- Python
- requests (HTTP 요청)
- BeautifulSoup4 (HTML 파싱)
- pandas (데이터 분석)
- matplotlib (시각화)
- CSV (데이터 저장)
- JSON (API 응답 처리)
게시글/댓글 요청
↓
HTML / JSON 응답 수신
↓
필요한 데이터 추출
↓
CSV 파일 저장
↓
시간(KST) 추출
↓
사용자별 활동량 집계
↓
차트 생성
↓
비정상 사용자 탐지
- 게시글에는 작성 시간이 공개되어 있지 않았습니다.
- 따라서 댓글의
created_at정보를 사용자 활동 기록으로 간주하여 활동 시간을 분석했습니다. - 모든 시간은 KST(UTC+9) 기준으로 처리했습니다.