Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Hacker_Programing_Homework

게시판 댓글 데이터를 수집하여 사용자별 활동 시간(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.txt

1단계: 데이터 수집

crawler.py를 실행하여 게시글과 댓글 데이터를 수집합니다.

python crawler.py

수행 작업

  • /post/1 ~ /post/100 게시글 수집
  • /comments/{post_id} 댓글 API 수집
  • 게시글 제목, 작성자, 내용 저장
  • 댓글 작성자, 내용, 작성 시간 저장

생성되는 파일

data/
├── posts.csv
└── comments.csv

2단계: 데이터 분석

수집된 데이터를 기반으로 활동 시간을 분석합니다.

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/김도현.png
  • charts/오지영.png
  • charts/김준호.png

비정상 사용자 탐지 기준

조건 1 — 24시간 활동

  • 0시부터 23시까지 모든 시간대에 댓글이 존재하는 경우

조건 2 — 특정 시간 집중

  • 한 시간 동안 댓글이 30개 이상
  • 그리고 해당 시간이 전체 댓글의 50% 이상을 차지하는 경우

조건 3 — 연속 3시간 과다 활동

  • 연속된 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) 기준으로 처리했습니다.

About

화이트 햇 스쿨 4기 해커의 프로그래밍 과제입니다.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages