#http://quantkim.blogspot.com/2018/01/dart-api-with.html
#https://blog.naver.com/PostView.nhn?blogId=dreaming2b&logNo=221461315268
#개발가이드 참고
#https://opendart.fss.or.kr/guide/main.do?apiGrpCd=DS001
#공시정보 > 공시검색
#https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019001
#STEP 1
import pandas as pd
from bs4 import BeautifulSoup
import webbrowser
import json
import urllib
from urllib.request import urlopen
#STEP 2 요청인자
crtfc_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #API 인증키 (필수)
corp_code = "00126380" #회사고유번호, ※ 개발가이드 > 공시정보 > 고유번호 API조회 가능
bgn_de = "20100101" #시작일, 없으면 종료일
end_de = "" #종료일, 없으면 당일
last_reprt_at = "" #최종보고서만 검색여부(Y or N) 기본값 : N
pblntf_ty = "&pblntf_ty=A&pblntf_ty=B&pblntf_ty=C" #A : 정기공시, B : 주요사항보고, C : 발행공시, D : 지분공시, E : 기타공시, F : 외부감사관련, G : 펀드공시, H : 자산유동화, I : 거래소공시, j : 공정위공시
corp_cls = "" #없으면 전체조회, 법인구분 : Y(유가), K(코스닥), N(코넥스), E(기타)
sort = "" #정렬, 접수일자: date, 회사명 : crp, 보고서명 : rpt, 기본값 : date
sort_mth = "" #정렬방법, 오름차순(asc), 내림차순(desc) 기본값 : desc
page_no = "1" #페이지 번호(1~n) 기본값 : 1
page_count = "2" #페이지당 건수(1~100) 기본값 : 10, 최대값 : 100
#STEP 3
url_1 = "https://opendart.fss.or.kr/api/list.json?crtfc_key="+crtfc_key+"&corp_code="+corp_code+"&bgn_de="+bgn_de+"&end_de="+end_de+"&last_reprt_at="+last_reprt_at+"&pblntf_ty="+pblntf_ty+"&corp_cls="+corp_cls+"&sort="+sort+"&sort_mth="+sort_mth+"&page_no="+page_no+"&page_count="+page_count
#STEP 4
#https://rfriend.tistory.com/475
#https://blog.naver.com/jay-bird/221951337190
#https://www.youtube.com/watch?v=PdKOSGNs3Ig
with urlopen(url_1) as url:
resultJson = url.read() #<class 'bytes'>
result = json.loads(resultJson.decode('utf-8')) #<class 'dict'>
# json.loads()를 하면 string을 딕셔너리로 바꿀 수 있다.
#utf-8, euc-kr, latin-1, utf-16
#STEP 5
#print(type(resultJson)) #<class 'bytes'>
#print(type(result)) #<class 'dict'>
#print(type(result["list"])) #<class 'list'>
#STEP 6
dataList = result["list"]
data = pd.DataFrame()
#print(dataList[0].values())
for dd in dataList:
#print(dd.values()) #print(dd.keys())
temp = pd.DataFrame([dd.values()], columns=dd.keys())
data = pd.concat([data,temp]) #pd.concat() 데이터프레임을 합치는 함수
#STEP 7
data = data.reset_index(drop = True) #concate이후 인덱스 재설정
#print(data)
#OPTIONAL
print(data)
user_num=int(input("몇 번째 보고서를 확인하시겠습니까?"))
url_user="http://dart.fss.or.kr/dsaf001/main.do?rcpNo="+data['rcept_no'][user_num]
webbrowser.open(url_user)
[파이썬] GUI, PyQt5 메모 (0) | 2020.08.23 |
---|---|
[파이썬] argv[], 재귀함수 (하위폴더검색) (유튜브 보다가 메모) (0) | 2020.08.23 |
[파이썬] DART 전자공시 API 사용방법(XML) - 인증,기업공시 검색까지 정리 (0) | 2020.08.18 |
[파이썬] 내장함수, 외장함수 (유튜브 보다가 메모) (0) | 2020.08.18 |
[파이썬] 클래스, 모듈, 패키지, 예외처리 (유튜브 보다가 메모) (0) | 2020.08.18 |