[파이썬을 이용한 주식 크롤링] 6.증권플러스 재무제표 가져오기 (4)
지난시간에 문제가 생겼었습니다. 날짜를 단순히 연도만 남긴 숫자로 만들었기 때문에 분기로 할 경우 x값이 중복되었는데요. x값을 시계열로 바꿔주겠습니다.
먼저 원리를 간단히 설명하겠습니다.
우리가 크롤링해온 날짜데이터는 아래와 같습니다.
2009-09-01T00:00:00.000+00:00
위 데이터에서 연,월,일만 가져와서 시계열데이터로 만들어줄 것입니다. 아래 코드를 사용합니다.
datetime.strptime(tab.baseDate[i][0:10],'%Y-%m-%d')
0:10은 2009-09-01 까지 가져오는 것을 의미하고, 뒤에 %Y-%m-%d 는 입력된 형식입니다. 연,월,일이 - 로 구분되어있다는 의미입니다.
datetime.strptime 함수를 사용합니다. 아래 코드로 함수를 호출했습니다.
from datetime import datetime
datetime 모듈 안에 같은 이름의 함수가 있기 때문입니다.
아래는 전체 코드입니다. 바뀐 부분을 빨간식으로 표시하였습니다.
stem 그래프로 그려보았습니다. 산점도에서 점을 x축까지 세로선으로 연결한 그래프입니다. 산점도인데 막대그래프처럼 보이게 됩니다.
import json
import urllib.request as req
import pandas as pd
import requests
import matplotlib
from bs4 import BeautifulSoup
from matplotlib import pyplot as plt
from matplotlib import font_manager, rc
from datetime import datetime
#종목코드
item_code='005390'
#분기 or 연도 선택
yorq='quarterly'
#궁금한 지표
output='per'
#재무데이터 가져오기, %s 를 이용하여 종목을 변수로 입력
myurl='https://stockplus.com/api/companies/KOREA-A%s/financial_statements.json'
myurl=myurl % item_code
data= req.urlopen(myurl).read()
dataj = json.loads(data.decode('utf-8'))
tab=pd.DataFrame(dataj[yorq])
#연도데이터중 연,월,일 만 인덱싱해서 시계열데이터로
for i in range(len(tab.baseDate)):
tab.baseDate[i]= datetime.strptime(tab.baseDate[i][0:10],'%Y-%m-%d')
#종목 이름 가져오기
url_name=requests.get("https://finance.naver.com/item/main.nhn?code=005930").text
soup=BeautifulSoup(url_name,"html.parser")
name=soup.select("div.wrap_company a")[0].get_text()
#한글 출력 가능하게함
my_font = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=my_font)
#x,y값 설정
x=tab.baseDate
y=tab[output]
#그래프 그리기
#마이너스 부호 사용
matplotlib.rcParams['axes.unicode_minus'] = False
plt.xticks(rotation=90)
#stem 함수 이용해서 세로선 만듦
markerline, stemlines, baseline =plt.stem(x,y,markerfmt=' ',basefmt="m")
plt.setp(baseline, 'linewidth', 0)
plt.setp(stemlines, 'linewidth', 5)
plt.xticks(fontsize =8) #x 눈금 레이블 크기
plt.gca().xaxis.set_major_locator(matplotlib.dates.MonthLocator([3,6,9,12])) #3,6,9,12월만 눈금으로
plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%Y-%m")) #눈금 레이블 형태
plt.title(name+' '+output)
plt.show()
'크롤링 > 파이썬 주식 크롤링' 카테고리의 다른 글
[파이썬을 이용한 주식 크롤링] 5.증권플러스 재무제표 가져오기 (3) (0) | 2020.07.22 |
---|---|
[파이썬을 이용한 주식 크롤링] 4.증권플러스 재무제표 가져오기 (2) (0) | 2020.07.21 |
[파이썬을 이용한 주식 크롤링] 3. 증권플러스 재무제표 가져오기 (1) (0) | 2020.07.17 |
[파이썬을 이용한 주식 크롤링] 2. pd.read_html 함수가 작동하지 않는 이유 (1) | 2020.07.17 |
[파이썬을 이용한 주식 크롤링] 1. 무엇을 하려는가? (0) | 2020.07.17 |
댓글