-
[기업정보 크롤링] #2 공시정보 고유번호 받아오기투자/OpenDART 2020. 3. 14. 02:11
OPENDART 개발가이드의 API들을 살펴보면 '고유번호'라는 요청인자가 필요하다. (8자리 코드를 사용한다. 종목코드와는 별도)
내가 원하는 기업의 정보를 API를 통해 받아오려면 해당 기업의 고유번호를 알아야 한다는 것이다.
그렇다면 고유번호는 어떻게 알 수 있을까? 이 역시도 API로 제공한다.
공시정보 -> 4.고유번호 항목을 보자. 상세기능을 보면 몇가지 기본정보를 파일로 제공한다고 되어있다.
이 API는 #1에서 발급받은 API key만 넣으면 기업정보를 Zip파일로 제공한다.
이 API를 호출하여 파일을 다운받고, 압축을 풀어서 내용을 확인해 보자. 나는 Visual Studio Code를 사용했다.
# st3adyPrac@gmail.com # 공시정보 - 고유번호(4) from urllib import request from zipfile import ZipFile import ssl, os context = ssl._create_unverified_context() API_KEY="발급받은API키를입력" url = "https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key="+API_KEY print("요청주소 : " + url) data = request.urlopen(url, context=context) filename = data.info().get_filename() print("파일명 : " + filename) with open(filename, 'wb') as f: f.write(data.read()) f.close print("다운로드 완료.") with ZipFile(filename, 'r') as zipObj: zipObj.extractall('./') # 현재 디렉토리에 압축을 해제 if os.path.isfile(filename): os.remove(filename) # 원본 압축파일 삭제
위 코드는 API를 호출하여 공시대상회사에 대한 정보를 다운로드 받고, 다운받은 zip파일의 압축을 해제한다.
정상적으로 API 호출이 됐다면, 현재폴더에 CORPCODE.xml 이라는 파일이 생겼을 것이다.
<?xml version="1.0" encoding="UTF-8"?> <result> <list> <corp_code>00434003</corp_code> <corp_name>다코</corp_name> <stock_code> </stock_code> <modify_date>20170630</modify_date> </list> <list> <corp_code>00434456</corp_code> <corp_name>일산약품</corp_name> <stock_code> </stock_code> <modify_date>20170630</modify_date> </list> ...
파일 내용은 API 상세기능에 명시된 것과 같이 고유번호/회사명/종목코드(상장기업)/최근변경일자로 이루어진다. (대표자명은 없다)
회사별 고유번호를 추출했으니 이 정보를 이용해 다른 OPENDART API를 호출할 수 있다!
다음번 포스팅에서는 CORPCODE.xml 의 내용을 검색하여 원하는 기업의 정보만을 추출하는 법을 알아보겠다.
'투자 > OpenDART' 카테고리의 다른 글
[기업정보 크롤링] #3 기업 고유번호 검색하기 (0) 2020.03.31 [기업정보 크롤링] #1 Open DART 가입 및 인증키 신청 (0) 2020.03.08