네이버에서 제공하는 주식 정보를 조회하는 간단한 API 호출을 구현한 프로그램
### 주요 기능 요약:
- **주식 정보 조회 (`get_sise` 함수)**: 특정 주식 코드에 대해 주어진 기간의 주식 데이터를 가져오는 함수입니다.
- **사용된 모듈**:
- `urllib.parse`의 `parse.urlencode`: 요청 매개변수를 URL에 인코딩하기 위해 사용됩니다.
- `requests`: 네이버 API에 HTTP GET 요청을 보내기 위해 사용됩니다.
- `ast.literal_eval`: 응답 데이터를 안전하게 파싱하기 위해 사용됩니다.
### 세부 기능 분석:
1. **함수 정의**:
```python
def get_sise(code, start_time, end_time, time_from='day'):
```
- `code`: 주식 종목 코드 (예: '005930'은 삼성전자).
- `start_time`, `end_time`: 데이터 조회 시작 및 종료 날짜 (형식: 'YYYYMMDD').
- `time_from`: 시간 프레임 (예: 'day', 'week' 등).
2. **URL 매개변수 구성**:
```python
get_param = {
'symbol': code,
'requestType': 1,
'startTime': start_time,
'endTime': end_time,
'timeframe': time_from
}
get_param = parse.urlencode(get_param)
```
- 주어진 매개변수로 `get_param` 딕셔너리를 만든 후, `parse.urlencode`를 사용하여 URL 쿼리 매개변수 형식으로 변환합니다.
3. **URL 생성 및 API 호출**:
```python
url = "https://api.finance.naver.com/siseJson.naver?%s" % (get_param)
response = requests.get(url)
```
- `url`은 네이버의 금융 API를 호출하기 위해 만들어집니다. `requests.get(url)`을 사용하여 해당 URL로 HTTP GET 요청을 보냅니다.
4. **응답 데이터 파싱**:
```python
return literal_eval(response.text.strip())
```
- 응답 데이터는 문자열로 반환되므로 `literal_eval`을 사용하여 파이썬 객체로 변환합니다. 이 방법은 응답 데이터가 JSON 형식과 유사한 경우 매우 편리합니다.
### 코드 사용 예:
```python
print(get_sise('005930', '20230721', '20230730', 'day'))
```
- 삼성전자(005930)의 주식 데이터를 2023년 7월 21일부터 7월 30일까지 일 단위로 조회합니다.
### 데이터 흐름 분석:
1. 사용자가 종목 코드와 날짜 정보를 함수에 입력합니다.
2. 함수가 해당 매개변수를 기반으로 네이버 금융 API에 HTTP GET 요청을 전송합니다.
3. 응답 데이터를 문자열로 받은 후, `literal_eval`을 사용하여 리스트로 변환한 뒤 반환합니다.
### 네이버 API 특성:
- 네이버에서 제공하는 주식 데이터 API는 비공식 API로, 안정성과 접근성이 보장되지 않을 수 있습니다. 데이터를 수집하는 동안 서버의 응답이 일관되지 않을 수 있고, 갑자기 서비스가 중단될 가능성도 있습니다. 공식적인 API나 제공되는 SDK가 있다면 사용하는 것이 더 좋습니다.
결론적으로 이 코드는 특정 기간 동안 주식의 시세 데이터를 수집하기 위한 간단한 기능을 제공하며, `requests`와 `urllib` 모듈을 사용해 GET 요청을 구성하고 데이터를 가져오는 데 초점을 두고 있습니다. 보안성, 안정성, 오류 처리를 강화하여 실 사용 시 발생할 수 있는 문제를 대비하는 것이 필요합니다.
조회된 내용을 보기 쉽게 보완하고 종가 기준으로 챠트를 생성한 소스
챠트에 한글 표시하도록 폰트 설정 추가
'PYTHON(파이썬) > 파이썬 활용' 카테고리의 다른 글
| 첨부파일을 포함한 e-mail 보내기 (18) | 2024.11.14 |
|---|---|
| python으로 간단하게 e-mail 보내기 (2) | 2024.11.13 |
| MCPROTOCOL을 이용한 미쓰비시 PLC 통신 (2) | 2024.11.01 |
| 파이썬으로 작성한 SERIAL 통신 프로그램 (0) | 2024.10.31 |
| PC에 연결된 SERIAL PORT 찾기 (파이썬 그리고 C#) (2) | 2024.10.31 |