suminb / finance

경제적 자유로의 여정

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

전자공시(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&currentPage=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도 알아내셨나요?

아뇨, 그 부분은 자세히 보지 않았습니다.