# Chapter 07 시가총액 분석

## 📋 실습 개요
이번 장에서는 **웹 스크래핑과 데이터 시각화**를 활용하여 코스피 상장기업의 시가총액을 분석하는 프로젝트를 진행합니다.
- **Playwright**로 네이버페이 증권 웹사이트 자동화
- **Pandas**로 시가총액 데이터 처리 및 분석
- **Plotly**로 인터랙티브 트리맵 차트 생성
- **누적 비율** 개념을 활용한 상위 기업 분석

## 📁 실습 파일 구조
```
ch_07/
├── step_1_1.py         # 기본 디렉토리 설정
├── step_1_2.py         # Playwright 브라우저 설정
├── step_1_3.py         # 시가총액 페이지의 테이블 데이터 추출
├── step_1_4.py         # 테이블 데이터 정제 및 DataFrame 변환
├── step_2_1.py         # 총 페이지 수 추출
├── step_2_2.py         # 전체 페이지 시가총액 데이터 수집
├── step_3_1_cumsum.py  # 누적합 함수 활용 예제
├── step_3_1.py         # 상위 기업 분석 및 누적비율 계산
├── step_3_2_treemap.py # 트리맵 기본 사용법 예제
├── step_3_2.py         # Plotly 트리맵 차트 생성 및 저장
├── step_x.py           # 미니 프로젝트: ETF 데이터 추출
└── output/             # 결과 데이터 및 차트 저장 폴더
```

## ⚙️ 패키지 설치
실습을 진행하기 위해 비주얼 스튜디오 코드 터미널에 아래 명령어를 입력하여 파이썬 패키지를 설치하세요.

```shell
pip install -U playwright kaleido nbformat pandas plotly tqdm
```

> **📝 참고**: `tqdm` 패키지는 미니 프로젝트에서 데이터 처리 진행 상태를 표시하기 위한 패키지입니다. 이 패키지에 대한 자세한 내용은 책 343 페이지를 참고하세요.

또한 아래 명령어를 입력하여 최신 크로미움 브라우저를 설치하세요.

```shell
playwright install
```

## 🚨 중요한 사전 준비사항

### 💡 웹 스크래핑 실습 개요
이번 실습은 실제 웹사이트에서 데이터를 수집하여 분석하는 프로젝트입니다:
- **실시간 데이터 수집**: 네이버페이 증권에서 최신 시가총액 정보를 자동으로 수집합니다
- **브라우저 자동화**: Playwright를 사용해 실제 브라우저를 제어합니다
- **대용량 데이터 처리**: 전체 코스피 상장기업 데이터를 효율적으로 처리합니다
- **인터랙티브 시각화**: Plotly로 동적 차트를 생성합니다

### 🌐 인터넷 연결 필수!
웹 스크래핑 실습을 위해서는 **안정적인 인터넷 연결**이 필요합니다:
- 네이버페이 증권 웹사이트 접속
- Playwright 브라우저 다운로드
- 실시간 데이터 수집

> **📝 참고**: 모바일 핫스팟 사용 등 인터넷 연결이 느린 경우 `run_playwright()` 함수의 `slow_mo` 매개변수의 값을 늘려 주세요(예: 1000 → 3000).

### 🔧 브라우저 설치 확인
Playwright가 정상적으로 작동하려면 크로미움 브라우저 설치가 완료되어야 합니다:

#### 🔽 브라우저 설치 확인 방법
터미널에서 다음 명령어를 실행하여 설치 상태를 확인하세요:

```shell
playwright install --dry-run
```

만약 설치가 필요하다면 다음 명령어를 실행하세요:

```shell
playwright install
```

### ⚠️ 웹사이트 접근 제한 주의사항
- 네이버페이 증권 웹사이트의 구조가 변경될 수 있습니다
- 과도한 요청 시 일시적으로 접근이 제한될 수 있습니다
- 실습용으로만 사용하고 상업적 목적으로 사용하지 마세요

### 🆘 도움이 필요한 경우
- Playwright 설치가 어려운 경우
- 브라우저 자동화가 작동하지 않는 경우
- 웹사이트 접근이 제한되는 경우
- 데이터 수집 중 오류가 발생하는 경우

**👉 저자의 오픈 채팅에 문의해 주세요!**

---

## 🎯 실습 시작 전 체크리스트
- [ ] 인터넷 연결 상태 확인
- [ ] 가상환경 설정 완료 (명령 팔레트 활용)
  - `F1` 또는 `Ctrl/Cmd+Shift+P` → `env` 입력 → `Python: 환경 만들기` 선택 
  - `Venv` 선택 → 최신 Python 버전 선택
- [ ] 필수 패키지 설치 완료 (터미널 활용)
- [ ] Playwright 브라우저 설치 완료
- [ ] 네이버페이 증권 웹사이트 접속 확인 (https://finance.naver.com)

## 🚀 실습 순서
1. **step_1_1.py**: 기본 환경 설정 및 폴더 생성
2. **step_1_2.py**: Playwright 브라우저 자동화 기본 설정
3. **step_1_3.py**: 네이버페이 증권 시가총액 페이지 이동 및 테이블 데이터 추출
4. **step_1_4.py**: 테이블 데이터 정제 및 DataFrame으로 변환
5. **step_2_1.py**: 전체 페이지 수 확인 및 추출
6. **step_2_2.py**: 모든 페이지의 시가총액 데이터 수집
7. **step_3_1.py**: 수집된 데이터 분석 및 상위 기업 선별
8. **step_3_2.py**: Plotly를 활용한 트리맵 차트 생성 및 저장
9. **step_x.py**: 미니 프로젝트 - ETF 데이터 추출 실습

모든 준비가 완료되었다면 시가총액 분석 실습을 시작해보세요! 🚀