dart 에서 공시된 정보를 가져 오는 방법은 두가지 입니다.
1. api 키를 발급받아 가져오기
2. selenium 과 chromedrive 모듈을 사용하여 쿼리주소를 찾고 bs4 로 파싱하기
첫번째 방법 부터 알아 보겠습니다.
아래는 dart api 키를 발급받아 공시 정보를 가져 오는 방법입니다. 먼저 찾고자 하는 회사의 고유번호를 찾아야 합니다.
crtfc_key ='tell_me'에서 tell_me 를 발급받은 api 키로 변경하세요.
# # 1. 다트 api 에서 api 키를 발급 받기
# https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019018
# # 2. 다트 개발가이드에서 고유번호 요청 url 확인
# https://opendart.fss.or.kr/guide/main.do?apiGrpCd=DS001
# # 3. 개발자 가이드에서 필요한 코드 확인하기
# https://dart-fss.readthedocs.io/en/latest/dart_search.html
crtfc_key = 'tell_me'
import requests
import pandas as pd
import io
import zipfile
import xml.etree.ElementTree as et
import json
def get_corpcode(crtfc_key):
"""
OpenDART 기업 고유번호 받아오기
return 값: 주식코드를 가진 업체의 DataFrame
"""
params = {'crtfc_key':crtfc_key}
items = ["corp_code","corp_name","stock_code","modify_date"]
item_names = ["고유번호","회사명","종목코드","수정일"]
url = "https://opendart.fss.or.kr/api/corpCode.xml" #요청 url
res = requests.get(url,params=params) #url 불러오기
zfile = zipfile.ZipFile(io.BytesIO(res.content)) #zip file 받기
fin = zfile.open(zfile.namelist()[0]) #zip file 열고
root = et.fromstring(fin.read().decode('utf-8')) #utf-8 디코딩
data = []
for child in root:
if len(child.find('stock_code').text.strip()) > 1: # 종목코드가 있는 경우
data.append([]) #data에 append하라
for item in items:
data[-1].append(child.find(item).text)
df = pd.DataFrame(data, columns=item_names)
return df
stock_comp = get_corpcode(crtfc_key)
with open('고유번호.txt', 'w', encoding='utf-8') as file:
file.write(stock_comp.to_string())
# 고유번호 종목코드 수정일
# 2362 01204056 하이브 352820 20230110
하이브의 dart 고유번호는 01204056 입니다.
이제 필요한 데이터의 url 을 확인하고 연도를 입력하면 하이브에서 공시한 사업보고서를 저장할 수 있습니다.
역시 url 에서 tell_me 부분을 발급받은 api 키로 변경해서 실행해야 합니다.
import requests
# API 요청 URL 하이브 고유번호를 찾아서 입력 2023년 4월에 공시된 사업보고서, 최근3개년 18기,17기,16기
url = 'https://opendart.fss.or.kr/api/fnlttSinglAcntAll.json?crtfc_key=tell_me&corp_code=01204056&bsns_year=2022&reprt_code=11011&fs_div=CFS'
# HTTP 요청을 보내어 응답 받기
response = requests.get(url)
# 응답이 성공적인지 확인
if response.status_code == 200:
# JSON 데이터를 파일로 저장 재무상태표 저장
with open('single_pages\datas\hybe_data\hybe2023.json', 'w', encoding='utf-8') as file:
file.write(response.text)
print("JSON 파일이 성공적으로 저장되었습니다.")
else:
print("요청에 실패했습니다. 상태 코드:", response.status_code)
도움이 되셨다면 구독하기 버튼과 하트 버튼을 눌러주세요~
유용한 코드를 공유해 드립니다
반응형
'코딩' 카테고리의 다른 글
윈도우에서 wsl2로 리눅스 설치 후 비쥬얼스튜디오코드에서 리눅스 커널 실행하기 (0) | 2024.02.15 |
---|---|
복리 계산기, 복리로 계산했을 때 수익, 복리 수익 (0) | 2024.02.08 |
캐러셀 추천, 가로로 움직이는 캐러셀, 가로로 항목들이 자동으로 움직이게 하는 css, 가로 메뉴, 홈페이지 제작, django 코드 (0) | 2024.01.09 |
로또 번호 추첨기, 로또 번호 생성기, 로또 번호 추천, ai 로또 (0) | 2023.12.14 |
재미있는 별명 생성기 웃긴 직업 추천기 닉네임 생성기 별명 추천 이름 생성기 aka 생성기 (0) | 2023.12.13 |