파이썬 활용 주식 일봉 데이터 받기 및 차트 그리기 1
오늘은 지난 번 주식 전종목 코드 받기에 이어 주식 데이터 중 일봉 데이터를 웹에서 받아서 차트를 그려보는 코드를 작성한 것을 정리하였습니다.
오늘 기준 시가 총액 순위 25위인 LG전자를 예로 들어 작성해보겠습니다.
코드 작성 순서를 요약하면 다음과 같습니다.
1. 주식 코드를 변수로 받아서 네이버(Naver) 금융 페이지에서 일봉 데이터 받기
2. 웹 크롤링을 통해 받은 데이터 중 날짜, 시가, 고가, 저가, 종가, 거래량 데이터 추출
3. 5일/20일/60일/120일 이동 평균선 데이터 계산하기
4. 이동평균선 차트로 그리기
1. 주식코드를 입력하고 네이버 금융에서 데이터 받기
LG전자의 코드는 066570 입니다.
네이버 금융에서 LG전자 메인 페이지 URL은 https://finance.naver.com/item/main.nhn?code=066570 입니다.
오늘 우리는 이 URL를 이용하는 것이 아니라 차트 탭의 일봉 데이터를 받아야 하기 때문에 아래와 같이 개발자 도구를 열어서 해당 URL를 찾습니다.
우선 페이지 우측 상단의 Chrome 맞춤 설정 및 제어를 선택 - 도구 더 보기 선택 - 개발자 도구(D) Ctrl+Shift+I 선택
개발자 도구 화면이 나타나면 상단 탭 중에 Network 선택
이 상태에서 기존 열려 있는 창에서 차트 탭 선택
그러면 오른쪽 개발자 도구 창에서 다음과 같은 화면이 출력 됩니다.
여기서 화면 아래 쪽을 살펴보면 sise.nhn?symbol=066570&... 이렇게 시작하는 줄을 발견할 수 있다.
sise.nhn?symbol=066570&.. 줄을 찾았다면 한 번 더블 클릭 해보자.
새 창이 열리면서 다음과 같은 화면을 볼 수 있다.
<item data="날짜|시가||고가|저가|종가|거래량"/>의 형태로 날짜 순으로 오름 차순 정렬되어 있다.
참고로 'symbol'은 주식 코드, 'name'은 기업명, 'count'는 가져올 데이터 수, 'timeframe'은 일봉(day)/주봉(week)/월봉(month) 입니다.
그리고 새롭게 열린 창의 주소에 주목하자. 이 URL이 우리가 바로 사용하고자 하는 URL 입니다.
여기까지 준비가 되었으면 이제 일봉 데이터를 받아올 수 있는 코드를 작성해보자.
위 주소에서 066570 자리에 변수(code)로 바꾸면 아래와 같이 작성할 수 있다.
하지만 code라는 변수를 아래와 같이 마지막으로 보낼 수도 있다. 어떤 방법이든 상관없으니 편한 방법 한 가지를 선택하면 됩니다.
2. 웹 크롤링을 통해 받은 데이터 중 날짜, 시가, 고가, 저가, 종가, 거래량 데이터 추출
requests 모듈과 BeautifulSoup 모듈 추가하고 find_all()을 사용하여 item이라고 작성된 부분을 찾아서 실행하면 우리가 네이버 개발자 도구를 통해 봤던 <item data="날짜|시가||고가|저가|종가|거래량"/>의 형태의 데이터 500줄을 웹에서 찾았다.
다음은 items_list를 for문을 사용하여 한 줄 씩 data에 해당 하는 부분(" "안의 데이터)만 가지고 와서 split()함수를 사용하여 '|'로 구분된 6개의 데이터를 분리 후 list에 저장한다.
빠른 데이터 처리를 위해서 panda를 이용하여 수집한 data_list를 dataframe 형태로 변환
3. 5일/20일/60일/120일 이동 평균선 데이터 계산하기
이동 평균을 구하기 위해서 pandas.DataFrame.rolling() 함수를 사용합니다. 이 함수를 사용하면 손쉽게 원하는 이동 평균을 구할 수 있어요. 포멧은 간단합니다.
pandas.DataFrame.rolling(window=5).mean()
window라는 파라미터에 5개의 이동 평균 구하기 위해서는 5를 넣어주면 끝.
4. 이동평균선 차트로 그리기
지금까지 수집하고 계산한 데이터를 차트로 그려 봅시다.
차트를 그리기 위해서는 matplotlib라는 모듈을 사용합니다.
이동평균선 차트 그리기까지 완성되었습니다.
지금 까지 코드를 정리하여 함수로 만들고 합치면 아래와 같습니다.
정리하면서 차트 사이즈를 조절할 수 있는 파라미터 하나 추가 하였습니다.
최근 날짜 기준으로 몇 개까지 차트로 표현할지 size에 해당 숫자를 추가하면 됩니다.
이상입니다.
오늘도 즐거운 하루 되시고 잘 안되는 부분 있으면 댓글 주세요~
'파이썬 기초' 카테고리의 다른 글
주피터 노트북(Jupyter Notebook) 매직 명령어 이용하기 (0) | 2020.06.30 |
---|---|
주피터 노트북(Jupyter Notebook) Markdown 기능 및 수식 입력 방법 (0) | 2020.06.26 |
파이썬 활용 주식 전 종목 코드 구하기 (0) | 2020.06.17 |
주피터 노트북(Jupyter Notebook) 알고 있으면 유용한 팁 (0) | 2020.06.16 |
주피터 노트북(Jupyter Notebook) 설치 및 사용 방법 (4) | 2020.06.09 |