https://marketward.tistory.com/2
[Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기(1/4)
*Python 3.9.13을 사용했습니다. 한국거래소에서는 국내 상장사(코스피/코스닥)에 대한 정보를 아래 링크의 엑셀 파일을 통해 제공하고 있습니다. http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searc
marketward.tistory.com
위 단계에서 stock_list 변수로 모든 상자사의 "회사명, 종목코드"를 가져왔습니다.
*Python 3.9.13을 사용했습니다.
네이버증권API 중에는 종목의 요약 정보를 출력하는 기능이 있습니다.
예시로 '네이버' 종목의 요약 정보를 볼 수 있는 링크 입니다. API URL과 itemcode={종목코드}를 사용 합니다.
https://api.finance.naver.com/service/itemSummary.nhn?itemcode=035420
링크를 클릭하면 브라우저에서 아래와 같이 현재가, 거래량, per 등 각종 지표를 확인할 수 있습니다.

이제 이 지표 결과를 "회사명, 종목코드"와 함께 출력되도록 하겠습니다.
파이썬에서 제공하는 urlib와 json 모듈을 사용합니다. urlib에서는 request만 사용하기에 아래와 같이 import 하였습니다.
import pandas as pd
import json
import urllib.request
urllib.request를 사용하여 종목별 요약 정보를 가져와 출력할 수 있습니다.
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().decode('CP949')
raw_data 를 print하면 아래와 같이 종목별 API 사용결과를 출력할 수 있습니다.
제가 사용한 print문은 print("%s종목의 요약 정보 :\n%s"%(item_name,raw_data)) 입니다.

다만, 위 결과는 http 연결 결과를 가져온 것이기에 데이터 가공이 용이하지 않습니다. 따라서, json으로 변경해주어야 합니다. json 변경 부분이 금번 페이지의 마지막이기에 작성된 전체 코드를 붙입니다.
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)
json_data를 print하여 json 값을 확인해봅니다. 제가 사용한 print문은 print("%s종목의 json 정보 :\n%s"%(item_name,json_data)) 입니다.

잘된 것 같습니다. 이제 다음 시간엔 이렇게 얻은 데이터로 PER, PBR를 원하는 조건에 맞춰 나열해보고자 합니다.
다음 단계로 넘어가겠습니다.
https://marketward.tistory.com/4
[Python/파이썬]네이버증권API 활용 - PER, PBR 기준으로 종목 검색(3/4)
https://marketward.tistory.com/3 [Python/파이썬]네이버증권API 활용 - 네이버증권API + 종목코드로 json 결과 확인(2/3) [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기(1/3) marketward.tistory.com 네
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 활용 - PER, PBR 기준으로 종목 검색(3/4) (0) | 2022.11.14 |
[Python/파이썬] 네이버증권API 활용 - 회사명, 종목코드 받아오기(1/4) (0) | 2022.11.12 |