https://marketward.tistory.com/3
[Python/파이썬]네이버증권API 활용 - 종목코드로 json 결과 확인(2/4)
https://marketward.tistory.com/2 [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기(1/4) *Python 3.9.13을 사용했습니다. 한국거래소에서는 국내 상장사(코스피/코스닥)에 대한 정보를 아래 링크
marketward.tistory.com
네이버증권API의 요약 정보 결과를 종목별로 json변환하였습니다.
*Python 3.9.13을 사용했습니다.
종목의 요약 정보를 바탕으로, 조건에 맞는 종목을 검색해보고자 합니다.
종목 검색에 앞서 지표별 간단한 설명을 아래와 같이 드립니다.
명칭 | 설명 |
EPS(Earnings Per Share) 주당순이익 | 유통 주식수를 기준으로 1주당 1년 간 얼마의 이익을 냈는지 알 수 있는 지표입니다. |
PER(Price Earning Ratio) 주가수익비율 | PER은 주가를 EPS로 나눈 값으로 주당 순이익 대비 주식 가격을 측정합니다. 숫자가 0에 가까울수록 주가 대비 영업이익이 좋은 것으로 판단합니다. 단, 마이너스(-) 이거나 측정이 안되는 경우는 적자 상태를 의미합니다. |
PBR(Price to Book Ratio) 주가순자산비율 | PBR은 주가를 BPS로 나눈 값으로 주당순자산가치(BPS, Book-value Per Share)는 기업의 순자산을 발행 주식수로 나눈 것입니다. PBR이 0.7 이하면 매수를 적극 고려해야할 종목으로 판단하곤 합니다. |
주식 전문가는 아니지만... 좋다는 지표 기준으로 종목을 검색하겠습니다.
"PER이 0보다 크고 2보다 작으면서 PBR이 0.7보다 작은 종목"을 찾아보겠습니다.
이전 시간에 모든 종목 정보를 json으로 읽어오는 처리를 했기에 아래의 코드만 추가하였습니다.
#PER과 PBR을 변수로 지정합니다.
per_value = json_data['per']
pbr_value = json_data['pbr']
#우선, PER 값이 있는 종목을 골라 냅니다.
if per_value :
#PER이 0보다 크고 2보다 작은 종목이면서 PBR이 0.7보다 작은 종목을 찾습니다.
if 0 < per_value < 2 and 0.7 > pbr_value :
print("[%s]의 per은 %s 입니다. (pbr %s)" %(item_name, per_value, pbr_value))
전체 코드 입니다.
import pandas as pd
import json
import urllib.request
#한국거래소에서 종목 코드 받아옵니다. [0]은 헤더를 첫번째 행으로 지정하기 위해 사용 했습니다.
code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]
#종목코드가 6자리이기 때문에 6자리를 맞춰주기 위해 설정해줍니다.
code_df.종목코드 = code_df.종목코드.map('{:06d}'.format)
#우리에게 필요한 회사명과 종목코드만 남깁니다.
code_df = code_df[['회사명', '종목코드']]
#리스트 형식으로 변경하면 네이버증권API 사용을 위한 준비가 끝납니다.
stock_list = code_df.values.tolist()
for stock_set in stock_list:
#회사명을 가져옵니다.
item_name = stock_set[0]
#종목코드를 가져옵니다.
item_code = stock_set[1]
#네이버증권API인 요약 정보 기능을 사용 합니다.
url = "https://api.finance.naver.com/service/itemSummary.nhn?itemcode=%s"%(item_code)
#urllib.request를 통해 링크의 결과를 가져옵니다.
raw_data = urllib.request.urlopen(url).read()
#추후, 데이터 가공을 위해 json 형식으로 변경 합니다.
json_data = json.loads(raw_data)
#PER과 PBR을 변수로 지정합니다.
per_value = json_data['per']
pbr_value = json_data['pbr']
#우선, PER 값이 있는 종목을 골라 냅니다.
if per_value :
#PER이 0보다 크고 2보다 작은 종목이면서 PBR이 0.7보다 작은 종목을 찾습니다.
if 0 < per_value < 2 and 0.7 > pbr_value :
print("[%s]의 per은 %s 입니다. (pbr %s)" %(item_name, per_value, pbr_value))
실행 시 결과가 아래와 같이 순차 출력되고 있는 것을 확인할 수 있습니다.
네이버증권의 공개(?) API를 활용하여 간단한 Python 스크립트를 작성해 보았습니다.
다음 페이지 입니다.
https://marketward.tistory.com/5
[Python/파이썬]네이버증권API 활용 - multiprocessing 사용 (4/4)
https://marketward.tistory.com/4 [Python/파이썬]네이버증권API 활용 - PER, PBR 기준으로 종목 검색(3/4) https://marketward.tistory.com/3 [Python/파이썬]네이버증권API 활용 - 네이버증권API + 종목코드로 json 결과 확인(2
marketward.tistory.com
'Python > 네이버증권API(Old)' 카테고리의 다른 글
[Python/파이썬] 네이버증권API 활용 - ETF ETN의 "종목코드, 종목명"가져오기 (0) | 2022.11.19 |
---|---|
[Python/파이썬] 네이버증권API 활용 - multiprocessing 사용 (4/4) (0) | 2022.11.14 |
[Python/파이썬] 네이버증권API 활용 - 종목코드로 json 결과 확인(2/4) (0) | 2022.11.13 |
[Python/파이썬] 네이버증권API 활용 - 회사명, 종목코드 받아오기(1/4) (0) | 2022.11.12 |