YouTube2Text

[파이썬 퀀트] 18강 - DART API를 이용해 공시정보 및 재무제표 수집하기 — Transcript

by 헨리의 금융MBA · 1,699 words · 366 segments · language ko · Watch on YouTube

Full transcript

  1. 0:01[음악]
  2. 0:09지난 시간까지 투자에 필요한 주가
  3. 0:11그리고 재무제표 데이터를 수집했으나
  4. 0:14오늘은 투자에 도움이 될 수 있는
  5. 0:16기업의 공시 내역을 수집하는 법에
  6. 0:19대해서 알아보도록 하겠습니다 투자를
  7. 0:21하는 분이라면 여기 사이트는 한 번쯤
  8. 0:24들어가 보셨죠 다트 같은 경우는 금융
  9. 0:27감독원 전자 공시 시스템으로서 상장
  10. 0:30법인 등이 공시 서류를 인터넷으로
  11. 0:32제출하고 투자자나 이용자는 제출 즉시
  12. 0:36인터넷을 통해서 조회할 수 있도록 해
  13. 0:38주는 홈페이지입니다 여기서 만약 내가
  14. 0:41관심 있는 회사 삼성전자를 검색해
  15. 0:44보면 삼성전자의 각종 공시 내역이
  16. 0:48올라와 있죠 그래서 이런 걸 보고 아
  17. 0:50어떤 일이 있었구나라는 거를 확인해
  18. 0:53보실 수가 있는데 매번 홈페이지에서
  19. 0:55일일이 확인하기보다 API 이용하시면
  20. 0:59훨씬 더 쉽게 공시 내역을 수집할
  21. 1:02수가 있습니다 먼저 여기 오
  22. 1:05dfss
  23. 1:07or.kr에 들어가셔서 API 키를
  24. 1:10받아야 되겠죠 여기서 회원 가입은
  25. 1:13따로 없고 인증키 신청 부분에 여기
  26. 1:16인증기 신청을 하는게 회원 가입이요
  27. 1:19그래서 이렇게 동의 누르시고 여러분
  28. 1:21이메일 입력하고 비밀번호 누르면은
  29. 1:24회원 가입이 되겠죠 그래서 이렇게
  30. 1:26회원 가입과 동시에 API 키를
  31. 1:29발급받 받으실 수가 있습니다 그래서
  32. 1:31만약에 회원 가입을 하고 로그인을 해
  33. 1:34보시면은 이렇게 인증키 관리 부분에
  34. 1:36아마 승인이라고 나올 겁니다 그리고
  35. 1:39오픈 API 이용 현양을 보면은
  36. 1:42여기서 여러분이 하루 동안 얼마나
  37. 1:44API 호출을 했느냐가 나오는데 하루
  38. 1:47동안 총 2만 번을 호출할 수
  39. 1:49있거든요 그래서 굉장히 넉넉한 양을
  40. 1:52호출할 수 있다라는 거를 확인하실 수
  41. 1:54있죠 여기서 나온 API 키를
  42. 1:57파이썬에 저장해 주도록 하겠습니다
  43. 1:59키링 패키지를 사용하시면 비밀번호나
  44. 2:02API 키 같은 거를 굉장히 쉽게
  45. 2:05관리하실 수 있거든요 요거를 해
  46. 2:07주시고 여기는 서비스 이름 우리는
  47. 2:10지금 다트를 이용하니까 다트 API
  48. 2:12키라고 해 주고 유저네임는 여러분의
  49. 2:14이름 그리고 패스워드에는 API 키를
  50. 2:18입력해 주시면 됩니다 저장을 하고
  51. 2:21나서 불러오는 법 같은 경우는 키링
  52. 2:24get 패스워드 하고 서비스 이름
  53. 2:26그리고 유저네임 해당하는 부분을
  54. 2:29입력하 하시면은 저장된 비밀번호가
  55. 2:32호출이 됩니다 저 같은 경우는 지금
  56. 2:34헨리로 저장을 했으니까 거기에 맞는
  57. 2:36API 키를 불러와서 API 키라는
  58. 2:40변수에 저장을 하게 되겠죠 그리고
  59. 2:43오픈 API 각 기업의 데이터를 받기
  60. 2:45위해서는 종목에 해당하는 고유번호를
  61. 2:48알아야 됩니다 그거를 받는 방법 같은
  62. 2:51경우는 여기 개발 가이드에 자세하게
  63. 2:53나와 있거든요 개발 가이드에서 공시
  64. 2:56정보를 눌러 보시고 여기서 고유번호
  65. 2:59를 들어가 보시면은 어떻게 하면 받을
  66. 3:02수 있다라는게 나옵니다 요청 URL
  67. 3:05여기가 되고 요청 인자요 거리에다
  68. 3:08여러분의 API 키를 보내면은 뭔가
  69. 3:11데이터를 받을 수가 있겠죠 그래서
  70. 3:13응답 결과를 보면은 뭐 이런게 있고
  71. 3:17이걸 이용해서 한번 고유번호를
  72. 3:20다운로드 받아 보도록 하겠습니다 먼저
  73. 3:23필요한 패키지를
  74. 3:25불러오고 여기 홈페이지에 나오는 거에
  75. 3:28맞춰서 url 작성해 주시면 되거든요
  76. 3:31여기는 요청 URL이고 요런 인자에
  77. 3:34여러분의 API 키를 보내면 되겠죠
  78. 3:39그리고 겟 함수를 통해서 데이터를
  79. 3:42요청하면 요렇게 200번이 데이터가
  80. 3:46받아져 온 거죠 그리고 받아온
  81. 3:49데이터에 헤더스 부분을 확인해
  82. 3:51보시면은 여기 어태치먼트 부분에 뭔가
  83. 3:55파일이 첨부되어 있는 거를 확인하실
  84. 3:57수 있죠 이거를 좀 더 자 자세히
  85. 4:00알아보도록 하겠습니다
  86. 4:03여기서
  87. 4:05컨텐트 디스포지션 부분이죠 요거를
  88. 4:09확인해 보면은 뭔가 파일 네임이
  89. 4:12코코드 Z 파일이 첨부되어 있다라는
  90. 4:15거를 확인할 수 있죠 이거를 압축을
  91. 4:18풀어서 첨부된 내용을 확인해 봐야
  92. 4:20되거든요 먼저 여기서
  93. 4:22컨텐트라고 입력을 해
  94. 4:26주시면은 어떤 내역이 입력돼 있는지
  95. 4:28나오는데 이걸 먼저 바이너리 스림
  96. 4:30형태로 만들어 줘야 됩니다
  97. 4:34그래서 스 아오를 해 주면은 바이너리
  98. 4:38스트림 형태로 바꾸고 지금 집
  99. 4:41파일이니 압축을 풀어서 확인해 봐야
  100. 4:47되겠죠 요게 집 파일을 푸는
  101. 4:50법이거든요 그래서
  102. 4:54요거를 저장을 해주도록 하고 여기서
  103. 4:58네임 리스트를
  104. 5:00해보면은 어떤 파일이 있는지 확인을
  105. 5:03하실 수 있습니다 지금 코코드
  106. 5:06xml이라는 파일이 들어와 있죠
  107. 5:09이제이 파일을 파이썬으로 불러오도록
  108. 5:12하겠습니다 여기 파일에서 리드 그리고
  109. 5:15파일명을 입력해 주시면은 파일을
  110. 5:17불러올 수 있거든요 그런데 내용이 좀
  111. 5:20깨지죠 왜냐면 이게 지금 인코딩이
  112. 5:22오류가 나기 때문에 깨지는 건데
  113. 5:25인코딩을
  114. 5:28한번 TF 8 형태로 변경해 줍니다
  115. 5:32그리고 데이터를 확인해 보면은 뭔가
  116. 5:35제대로 인코딩이 돼서 어떤 내용인지
  117. 5:38확인을 할 수가 있죠
  118. 5:41이거를요 부분에다가 저장을 해 주도록
  119. 5:44하고 지금 이게 xml 형태잖아요
  120. 5:47그래서 이거를 먼저 딕셔너리 형태로
  121. 5:50변경해 줘야 됩니다 먼저 패키지를
  122. 5:52불러오고
  123. 6:00이렇게 하면은 xml 딕셔너리 형태로
  124. 6:03바꾸게
  125. 6:05되거든요 저장을 해 준 다음에
  126. 6:07데이터를 확인해
  127. 6:10보면은 딕셔너리 내부에 리스트에 어떤
  128. 6:14내용들이 들어가 있죠 여기서 제이슨
  129. 6:19점 이렇게 해 주면은 제이슨 형태로
  130. 6:22변경이
  131. 6:25되거든요 그리고
  132. 6:28여기를 제이슨 노즈를 통해서 불러오고
  133. 6:33이거를 데이터 트라는는데 저장해
  134. 6:37줍니다 그리고
  135. 6:41나서을 통해서 리트를 불러오고 다시
  136. 6:45한번 개술 통해서 리스트를 불러
  137. 6:48오면은 우리가 원하는 부분에 데이터만
  138. 6:51불러올 수 있거든요 확인해 보면은
  139. 6:54뭔가 데이터들이 딕셔너리 형태로 쭉
  140. 6:57들어와 있죠 이거를 데터 프레임
  141. 6:59형태로 최종적으로 만들어 주면
  142. 7:06됩니다 요렇게 해
  143. 7:10주면은 고유번호가 데이터 프레임
  144. 7:13형태로 만들어지게 됩니다 왜 이렇게
  145. 7:16복잡한 방법으로 주는지는 모르겠지만
  146. 7:19어쨌든 요런 과정을 통해서 기업의
  147. 7:21고유번호를 확인할 수가 있는데 지금
  148. 7:24보시면 데이터가 거의 9만 개 정도가
  149. 7:27있죠 97,000 개가 있는데 왜
  150. 7:29그러냐 여기 스타 코드가 런으로
  151. 7:31표시된 부분은 상장 종목들이 아닙니다
  152. 7:35그러니까 비상장 종목들도 다 포함이
  153. 7:38되어 있는데 이런 거는 사실 필요가
  154. 7:41없는 것들이죠 그래서 이중에서 상장
  155. 7:44종목에 해당하는 것만 발라내서 SQL
  156. 7:47데이터베이스에 저장해 주도록
  157. 7:49하겠습니다 먼저 SQL 알케미
  158. 7:51패키지를 불러오고 이렇게 인을 통해서
  159. 7:56스타 코드가 넌이 아닌 부분 물결
  160. 7:59시니까 그 부분만 찾은 다음에 리셋
  161. 8:02인덱스를 통해서 인덱스를 초기화해
  162. 8:05줍니다 그런 다음에 그거를 2 SQL
  163. 8:09함수를 통해서 다트 코드라는
  164. 8:11데이터베이스에 저장을 해주도록 할게요
  165. 8:15그리고 SQL 데이터베이스를 확인해
  166. 8:23보면은 다트 코드라는 테이블에 요렇게
  167. 8:27상장 종목들의 고유번호 가 나타나죠이
  168. 8:30중에서 삼성전자의 데이터가
  169. 8:32궁금하다라고
  170. 8:39하시면은 요렇게 입력하면 되겠죠
  171. 8:42그러면 삼성전자 티커가
  172. 8:44005930이고 고유번호는 00126
  173. 8:47뭐 이렇게 나오죠 이거를 알아야 되는
  174. 8:50이유는 우리가 다트에서 공시 내역을
  175. 8:52받아올 때 일반적인 티커 이용하는게
  176. 8:55아니라 여기 데이터를 이용해서 받아
  177. 8:57오거든요 그렇기 때문에 이 정보가
  178. 9:00필요한 겁니다 이제 본격적으로 공시
  179. 9:03데이터를 받아볼 건데 먼저 전체
  180. 9:05종목의 공시 데이터를 수집해 보도록
  181. 9:08하겠습니다 URL 같은 경우는 여기
  182. 9:10개발 가이드에서 확인할 수 있거든요
  183. 9:12개발 가이드 공시 정보를
  184. 9:15클릭하시고 공시 검색을 눌러 보시면은
  185. 9:18해당 개발 가이드가 나와 있습니다
  186. 9:21여기 보면 인자는 이런게
  187. 9:23필요하다라는게 나와 있고 응답 결과는
  188. 9:26요런게 있다 그리고 여기서 검색을
  189. 9:30눌러 보시면은 샘플 URL 만들 수도
  190. 9:33있거든요 여기 xx 나타난게 여러분의
  191. 9:36API 키를 입력하시는 부분이고
  192. 9:39여기가 뭔가 시작 날짜 있죠 그리고
  193. 9:42여기가 끝
  194. 9:50날짜고정 K 코스닥 그리고 아무것도
  195. 9:53입력 안 하면은 전체 시장을 조회하는
  196. 9:56겁니다
  197. 9:58그리고 넘버랑 페이지 카운트는 1
  198. 10:0110이 있는데 이거 최대값이
  199. 10:03100까지 되거든요 그러면은 최댓값을
  200. 10:06입력하는게 낫겠죠 그래서 요런 정보를
  201. 10:08이용해서을 만들어 주도록 하겠습니다
  202. 10:11먼저 패키지를
  203. 10:13불러오고 데이트 투데이를 하면 이게
  204. 10:15오늘 날짜에 해당하는 거죠 그리고
  205. 10:18릴레티브 델타를 쓰면은 이게 7위를
  206. 10:22뺀 거겠죠 그러니까 오늘부터 7일
  207. 10:25이전부터 뜻이고 str F 타임을
  208. 10:28쓰면은 이게
  209. 10:30mmdd 형태로 변경이 되죠 그리고
  210. 10:33엔드 데이트는 오늘 날짜를 입력해
  211. 10:36주고 홈페이지에 있는 내용을 바탕으로
  212. 10:39URL 작성해 줍니다 F 스트링을
  213. 10:42통해서 여기는 요청하는 URL 그리고
  214. 10:45여기다가 여러분의 API 키 그리고
  215. 10:48시작 이에는 위에서 만든 거 종료
  216. 10:51이래도 위에서 만든 거 그리고 코스피
  217. 10:54코스닥 전체를 조회해야 되니까 코프
  218. 10:56언더바 CLS 아무것도 입력을 안
  219. 10:59되겠죠 그리고 페이지 넘버는 1
  220. 11:01페이지 카운트는 100으로 해 주시면
  221. 11:04됩니다 이거를 만들고 겟 함수를
  222. 11:08통해서 여기 에다가 데이터를 요청하면
  223. 11:11되겠죠 그러면은 요게 지금 200번이
  224. 11:14뭔가 제대로 데이터를 받아 온 거고
  225. 11:18우리가 제이슨 형태로 요청했으니
  226. 11:21제이슨을 하면은 그에 맞는 데이터를
  227. 11:24확인하실 수 있습니다 그리고 이걸
  228. 11:26한번 테스트라는 곳에다가 저장 을
  229. 11:29하고 테스트를 확인해 보면은 리스트
  230. 11:33부분에 뭔가 데이터가 들어와 있죠
  231. 11:35그래서이 중에서 리스트 부분만
  232. 11:37뽑아내면 되겠죠 겟 리스트를 통해서
  233. 11:40리스트 부분만 뽑아
  234. 11:44내면은 요렇게 공시 내역이 딕셔너리
  235. 11:47형태로 들어가게 되죠 이거를 PD
  236. 11:51데이터 프레임 함수를 통해서 데이터
  237. 11:52프레임 형태로 바꿔 주도록 하겠습니다
  238. 11:55그러면 최근 100개 공시에 해당하는
  239. 11:58내역이 이렇게 받아오게
  240. 12:01됩니다 근데 전체 종목이 아니라 내가
  241. 12:04원하는 종목의 공시가 궁금할 수도
  242. 12:06있잖아요 그런 경우도 확인을 하실
  243. 12:09수가 있거든요 여기 개발
  244. 12:12가이드에서 코프 코드 즉 고유번호만
  245. 12:15추가로 입력해 주시면은 해당 종목에
  246. 12:18공시 내역을 받아 오실 수 있습니다
  247. 12:21그때 여기 코드가 필요한 거죠 3성
  248. 12:23전자에 해당하는게 이거니까 요거를
  249. 12:25복사하셔서
  250. 12:29코프 코드에 삼성전자의 코드를 먼저
  251. 12:32입력을 해주고 나머지는 앞서 봤던
  252. 12:35거와
  253. 12:36동일하거나 요청하는 URL 비슷하고요
  254. 12:39부분만 추가로 입력해 주시면 되겠죠
  255. 12:41기업의 고유번호에 해당하는 쿼리만
  256. 12:44입력하고 여기까지는 아까 했던 거랑
  257. 12:58동일하겠지만 를 확인해 보면은
  258. 13:00삼성전자의 최근 일주일 동안의 공시
  259. 13:03내역이 나타나죠 그리고 루프 구문
  260. 13:07같은 걸 이용해서요 부분만 내가
  261. 13:09원하는 종목들의 코드를 입력하면 해당
  262. 13:12종목들의 공시 내용만 받을 수가
  263. 13:15있겠죠 그리고 여기서 데이터 프레임을
  264. 13:17확인해 보시면은 여기 뭔가 숫자가
  265. 13:20나오는데 이게 공시 번호에 해당하는
  266. 13:22겁니다 그래서 이거를 이용하면 URL
  267. 13:25뭔가 만들 수도 있거든요 공시 url
  268. 13:29어떻게 만들어지는지 여기 원래 다트에
  269. 13:31들어가셔서 여기를 클릭해 보면은 여기
  270. 13:34주소가 나오죠 그래서 여기까지는 고정
  271. 13:37주소고 여기가 공시 번호에 해당하는
  272. 13:40겁니다 그래서 이거를 응용해서 공시에
  273. 13:43해당하는 URL 만들 수도 있거든요
  274. 13:46먼저 가장 상단에 여기 공시 번호에
  275. 13:49해당하는 거를 찾고 F 스트링을
  276. 13:52이용해서 여기는 우리가 아까
  277. 13:54홈페이지에서 봤던 거죠 그리고 여기
  278. 13:57공시 번호에 위에서 받은 거 를
  279. 14:00입력합니다 그리고 이걸 프린터를
  280. 14:02통해서 확인해 보면은 뭔가 URL이
  281. 14:05만들어지죠 이거를 복사하신 다음에
  282. 14:08홈페이지에서 요거를 입력해 보면은
  283. 14:10이렇게 공시 페이지로 이동하게 됩니다
  284. 14:13그래서 이걸 보고 좀 더 자세하게
  285. 14:16어떤 공시 내력인가 확인을 해 보실
  286. 14:18수도 있겠죠 API 이용해서 사업
  287. 14:22보고서에서 주요 정보 역시 다운로드
  288. 14:24받을 수 있습니다 여기 개발 가이드해
  289. 14:27사업보고서 주요 정보를 클릭 이렇게
  290. 14:29보면은 굉장히 많은 정보를 확인하실
  291. 14:32수 있죠 그중에서 샘플로 한번 배당에
  292. 14:36관한 사항을 확인해 보도록 하겠습니다
  293. 14:38여기를 클릭해 보면은 어떠한 값이
  294. 14:41필요하다라는게 나와 있죠 API 키
  295. 14:45고유번호 그리고 사업 연도 마지막으로
  296. 14:48보고서 코드 1분기 반기 3분기 사업
  297. 14:52보고서는 연간에 해당하는 거겠죠
  298. 14:54그래서 이런 쿼리를 검색을 눌러서
  299. 14:57여기 URL 다가 전송하면 해당 값을
  300. 15:00제이슨으로 받게 되는 거겠죠 그래서
  301. 15:03요거를 응용해서 한번 배당에 관한
  302. 15:05내역을 받아보도록
  303. 15:07하겠습니다 먼저 삼성전자에 해당하는
  304. 15:10코드를 입력하고 2011년 데이터를
  305. 15:13받아볼게요 아직 2022년은 안
  306. 15:15나왔으니까 2021년을 하고 사업
  307. 15:18보고서에 해당하는 코드를 입력합니다
  308. 15:21그리고 f 스트링을
  309. 15:23통해서 URL 생성하겠습니다 그런
  310. 15:26다음에는 우리가 위에서 살펴봤던 것과
  311. 15:28동일한 과정입니다 겟 함수를 통해서
  312. 15:30데이터를 요청하고 제이슨의 리스트
  313. 15:33부분만 뽑은 다음에 그걸 데이터
  314. 15:35프레임 형태로 바꾸는 거죠 그리고
  315. 15:38이거를 확인해 보면은 이렇게
  316. 15:42삼성전자의 2021년 재무제표에
  317. 15:44나타난 배당 관련 내역을 확인하실
  318. 15:47수가 있습니다 마지막으로 제가 책에는
  319. 15:50안 써 놨지만 API 이용해서 전
  320. 15:53종목의 재무제표도 받을 수 있거든요
  321. 15:55여기 개발 가이드에서 상장기업 재무
  322. 15:58정보 를
  323. 16:00클릭하시면 단일 회사 전체 재무제표
  324. 16:03나오죠 그런데 금융업 같은 경우는 안
  325. 16:06나옵니다 그래서 상장 기업 중에
  326. 16:08금융업을 제외한 기업들의 재무제표를
  327. 16:12볼 수 있거든요 바로 가기를 눌러서
  328. 16:15어떻게 구성이 되느냐를 살펴보면은
  329. 16:18여기까지는 앞서 봤던 거랑 똑같죠
  330. 16:21그리고 개별이 연결이 구분 수 있는
  331. 16:24쿼리만
  332. 16:25추가되거나
  333. 16:27밑에서 검색을 눌러서 샘플 URL
  334. 16:30보면은 뭔가 계속 비슷하죠 비슷한데
  335. 16:33여기만 재무제표에 해당하는 URL
  336. 16:36바뀌게 되는 거죠 그래서 이거를
  337. 16:38이용해서 한번 URL 만들어 보도록
  338. 16:40하겠습니다 화면에 나온 걸 이용해서
  339. 16:43렇게 URL 만들 수 있겠죠 API
  340. 16:46키 커퍼 레코드 연도 어떤 데이터를
  341. 16:50볼 건지 그리고 연결 재무제표를 볼
  342. 16:52거니까 여기는
  343. 16:54ofs라고 입력을 해 줍니다 그리고
  344. 16:57앞서 했던 거와 똑같이 해 주시면
  345. 17:00되겠죠 이거를 해 본 다음에 데이터를
  346. 17:03확인해
  347. 17:04보면은 이렇게 재무제표에 해당하는
  348. 17:07데이터가 쉽게 받아올 수
  349. 17:10있습니다 BS 같은 경우는 재무
  350. 17:12상태표 is 손익 계산서 CF 현금
  351. 17:17물음표 CIS 포괄 손익 계산서
  352. 17:20이렇게 전체 재무제표에 해당하는 것도
  353. 17:23굉장히 쉽게 받아올 수 있거든요
  354. 17:25그러니까 보시면 아시겠지만요 부분만
  355. 17:28바꾸
  356. 17:29해당하는 쿼리 내용을 수정하면
  357. 17:31다트에서 제공하는 각종 데이터를
  358. 17:34API 손쉽게 받아보실 수 있습니다
  359. 17:37그리고 이걸 제가 올려 드렸던
  360. 17:39파이썬과 슬랙을 연결하는 법을
  361. 17:41이용하시면 매번 공시 내역을 확인하기
  362. 17:44위해서 홈페이지에 접속하는게 아니라
  363. 17:46내가 관심 있는 기업의 공시 내역이
  364. 17:48올라올 때마다 자동으로 슬랙으로
  365. 17:50전송이 되게도 만들 수가 있겠죠
  366. 17:56[음악]

About this transcript

This page contains the full transcript of [파이썬 퀀트] 18강 - DART API를 이용해 공시정보 및 재무제표 수집하기 by 헨리의 금융MBA, generated from the public captions YouTube serves with the video. The transcript has 1,699 words across 366 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.