전자공시(DART) 데이터 가져오기
suminb opened this issue · comments
작업 개요
전자공시 데이를 가져와서 구조화된 형태로 저장하고 관리함으로써 나중에 필요한 형태로 가공하거나, 필터링 해서 알림을 줄 수 있는 시스템을 만든다.
Example Request
curl 'http://m.dart.fss.or.kr/md3002/search.st?currentPage=2&maxResultCnt=15&corporationType=&textCrpNm=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&textCrpCik=00126380&startDate=20160907&endDate=20170307&publicType=&publicOrgType=&reportName=&textPresenterNm=&finalReport=&lastRcpNo=20170303800956&totalPage=&textTerm=&_=1488893683281' -H 'Cookie: JSESSIONID=xkpZNbiUquaV4eRUBcjdaEa2OYEYZJhDKRMWmOrKoM6ixFJogocZBG5UhVgpY2lz.dart2_servlet_engine1' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ko;q=0.6' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://m.dart.fss.or.kr/html_mdart/MD1005.html?startDate=20160907&endDate=20170307&textCrpCik=00126380&screenid=md1001&stype=md1001¤tPage=1&corporationType=&textCrpNm=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&textCrpNmAuto=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --compressed
Example Response
{
"rlist": [{
"curr_page": 3,
"row_num": 31,
"bsn_yr": null,
"crc_gubun": "N",
"crc_nm": null,
"crp_rgs_cls": "P",
"dsm_crp_cik": "00126380",
"dcm_id": null,
"dcm_no": null,
"dcm_nm": null,
"dcm_int_tp": "N",
"flr_cik": "00725534",
"ifm_nm": "삼성전자",
"ifm_nm2": "권오현",
"rpt_id": "00634",
"rpt_nm": "임원ㆍ주요주주특정증권등소유상황보고서",
"rcp_no": "20161222000173",
"rcp_dm": "2016.12.22",
"sub_com_tp": "N",
"rpt_title": null,
"dcm_tp": "0",
"rptNm": "임원ㆍ주요주주특정증권등소유상황보고서 "
}, {
NOTE: 여기서 20161222000173
와 같은 값은 일종의 식별자로 보고서로 바로 넘어갈 수 있는 키가 된다.
http://m.dart.fss.or.kr/html_mdart/MD1007.html?rcpNo=20161222000173
문서의 세부 항목은 다음과 같이 접근 가능하다.
curl 'http://m.dart.fss.or.kr/report/main.do' -H 'Cookie: JSESSIONID=xkpZNbiUquaV4eRUBcjdaEa2OYEYZJhDKRMWmOrKoM6ixFJogocZBG5UhVgpY2lz.dart2_servlet_engine1' -H 'Origin: http://m.dart.fss.or.kr' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.8,ko;q=0.6' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html, */*; q=0.01' -H 'Referer: http://m.dart.fss.or.kr/html_mdart/MD1007.html?rcpNo=20161222000173' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'rcpNo=20161222000173&dcmNo=5390164&eleId=2' --compressed
여기서 eleId
가 세부 항목의 아이디로 보여진다.
TODO
- 특정 종목에 대한 전자공시 보고서 리스트 받아오기
- 특정 종목에 대한 전자공시 리스트 모든 페이지 받아오기
- 특정 종목에 대한 전자공시 내용 받아오기
- 잘못된 종목 코드가 주어졌을 때의 처리
- (미리 등록된) 모든 종목에 대한 전자공시 리스트 및 내용 받아오기 (이것도 따로 이슈 만들어서 진행하는 편이 좋을 것 같다)
- 전자공시 데이터를 웹 인터페이스로 보여주기 (이건 따로 이슈를 만들어서 진행하는게 좋을 듯)
혹시 보고서의 dcmNo도 알아내셨나요?
혹시 보고서의 dcmNo도 알아내셨나요?
아뇨, 그 부분은 자세히 보지 않았습니다.