[파이썬을 이용한 주식 크롤링] 4. 증권플러스 재무제표 가져오기 (2)
지난 시간까지 만든 코드는 아래와 같습니다.
import json
import urllib.request as req #url 패키지
import pandas as pd
myurl='https://stockplus.com/api/companies/KOREA-A119610/financial_statements.json'
data= req.urlopen(myurl).read()
# decoding to python object
dataj = json.loads(data.decode('utf-8'))
tab=pd.DataFrame(dataj['yearly'])
tab에 담겨진 정보를 확인해봅시다. 열이름을 출력합니다.
중요한 변수들만 설명하면 아래와 같습니다. 각종 지표들은 나중에 차트데이터로 직접 계산할 것입니다.
baseDate : 날짜
operatingProfit : 영업이익
ownersNetProfit : 순이익
sales : 매출
tab을 출력하면 아래와 같습니다.
날짜 데이터가 복잡해서, 연도만 남기겠습니다. slice 함수를 이용하여 문자열을 조각내고, 원하는 부분만 가져옵니다.
tab을 다시 출력하면 아래와 같습니다. basedate에 연도만 남겨졌습니다.
이제 그래프를 그려봅시다. 먼저 title로 사용하기 위해 회사 이름을 크롤링으로 가져옵시다. 네이버에서 가져왔습니다.
import requests
from bs4 import BeautifulSoup
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()
div 테그의 클레스 이름은 wrap_company이고, 그 안의 첫번째 a태그의 내용이라는 것을 이용해서 크롤링한 것이다.
그래프에 한글을 출력하기 위해 아래 코드를 추가합니다.
from matplotlib import font_manager, rc
my_font = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=my_font)
x축은 연도, y축은 순이익으로 그래프를 그려보겠습니다. xticks 함수로 x축 눈금 레이블을 45도 기울였습니다.
from matplotlib import pyplot as plt
x_dt='baseDate'
y_dt='ownersNetProfit'
plt.xticks(rotation=45)
plt.bar(tab[x_dt],tab[y_dt])
plt.title(name+' '+y_dt)
plt.show()
아래는 그래프입니다.
전체 코드는 아래와 같습니다. 다음시간에는 이 코드를 약간 변형하여, 원하는 종목의 종목코드를 입력하면 그래프가 출력되도록 만들겠습니다.
import json
import urllib.request as req #url 패키지
import pandas as pd
myurl='https://stockplus.com/api/companies/KOREA-A005930/financial_statements.json'
data= req.urlopen(myurl).read()
dataj = json.loads(data.decode('utf-8'))
tab=pd.DataFrame(dataj['yearly'])
for i in range(len(tab.loc[:,['baseDate']])):
tab.loc[i,['baseDate']]=tab.loc[i,['baseDate']].str.slice(start=0,stop=4,step=1)
import requests
from bs4 import BeautifulSoup
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()
from matplotlib import font_manager, rc
my_font = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=my_font)
from matplotlib import pyplot as plt
x_dt='baseDate'
y_dt='ownersNetProfit'
plt.xticks(rotation=45)
plt.bar(tab[x_dt],tab[y_dt])
plt.title(name+' '+y_dt)
plt.show()
'크롤링 > 파이썬 주식 크롤링' 카테고리의 다른 글
[파이썬을 이용한 주식 크롤링] 6.증권플러스 재무제표 가져오기 (4) (1) | 2020.07.24 |
---|---|
[파이썬을 이용한 주식 크롤링] 5.증권플러스 재무제표 가져오기 (3) (0) | 2020.07.22 |
[파이썬을 이용한 주식 크롤링] 3. 증권플러스 재무제표 가져오기 (1) (0) | 2020.07.17 |
[파이썬을 이용한 주식 크롤링] 2. pd.read_html 함수가 작동하지 않는 이유 (1) | 2020.07.17 |
[파이썬을 이용한 주식 크롤링] 1. 무엇을 하려는가? (0) | 2020.07.17 |
댓글