[Spring] 한국거래소의 주가 정보 가져오기

 

0. 들어가기 전에

 

 한국거래소에서는 한국거래소가 보유한 기업정보, 시세정보 및 공시정보를 XML 형태로 정보를 제공해 드리는 서비스가 있습니다.

이는 무료로 제공되며 XML형태 이외에도 플래시나 ASP의 iframe 형태로도 제공합니다. (iframe 형태는 6월부로 서비스 종료 예정입니다.) 

아래의 주소에서 XML을 이용한 api를 확인 할 수 있습니다. 

https://kasp.krx.co.kr/contents/02/02010000/ASP02010000.jsp

해당 api 페이지에 첨부된 샘플을 적용하면 아래와 같은 화면을 구성할 수 있습니다. 다만 테이블의 하드코딩이 매우 심하므로 값만 추출하여 새로 테이블을 구성하는 것을 추천드립니다.

 

 

 

1. XML 확인하기 

 

우선 XML이 어떤식으로 되어있는지 확인하기 위해서 실시간시세를 가져와 보도록합니다. 네이버의 종목코드는 035420입니다.

api 페이지에 있는 실시간시세 주소로 접속해봅니다. (http://asp1.krx.co.kr/servlet/krx.asp.XMLSise?code=035420 )

 

XML을 불러온 페이지이기에 화면에 표기할 때 에러가 납니다. 하지만 오른쪽 클릭하셔서 소스보기를 하면 XML이 제대로 불러져 온 것을 확인 하실 수 있습니다.


 

 

 

2. XML 가져오기

 

이제 이 XML을 가져와 봅니다. 방법은 여러가지가 있겠지만 저는 서버에서 페이지를 읽어오는 방법을 사용하겠습니다.

메소드는 아래와 같이 구성합니다.

 public String getHtml(String url) {

     try {

         URL targetUrl = new URL(url);

         BufferedReader reader = new BufferedReader(new InputStreamReader(targetUrl.openStream()));

         StringBuilder html = new StringBuilder();

         String current = "";

         while ((current = reader.readLine()) != null) {

         html.append(current);

     }

     reader.close();

     return html.toString();

     } catch (MalformedURLException e) {

         e.printStackTrace();

     } catch (IOException e) {

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

         e.printStackTrace();

     }

 return null;

}

 

 

3. 파싱하기

 

XML을 통채로 가져와서는 원하는 값만 사용하도록 컨트롤하기 매우 어렵습니다. 저는 이 XML을 Map 형태로 변환하여 제어하기 편하게 만들겠습니다. 방법은 이전 포스팅인 XML to Map(http://blog.naver.com/platinasnow/220711917086)을 참고 하시면 됩니다.

 

파싱이 완료되었다면 이를 조합하여 프론트에 값을 떨궈줍니다. 이렇게하면 프론트 페이지에서 map에 접근하여 값을 가져올 수 있습니다.

 @RequestMapping(value = "/krx")

 public void krx(Model model) {

     String html = getHtml("http://asp1.krx.co.kr/servlet/krx.asp.XMLSise?code=035420");

     JSONObject json = XML.toJSONObject(html);

     Map<String, Object> resultMap = parseJsonToMap(json.toString());

 

     model.addAttribute("map", resultMap);

 }

 

 

 

4. 뷰페이지 구성

 

다음과 같이 구성해 줍니다. 샘플소스에 값만 주입한 형태이기 때문에 소스가 굉장히 지저분합니다.

 

 https://github.com/platinasnow/krx/blob/master/src/main/webapp/WEB-INF/views/krx.jsp

 

 

 

플래쉬로 차트를 구성할 수 있게 되어있는데 필요없다면 해당부분의 스크립트와 Object 부분을 지워주시면 됩니다.

새로 디자인하여 원하는 값만 이용하게끔 하는 것을 권장합니다.

 

 

샘플 소스는 아래에서 받으 실 수 있습니다.

 

 https://github.com/platinasnow/krx/

 

 

[출처] https://m.blog.naver.com/PostView.nhn?blogId=platinasnow&logNo=220730608310&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
46 전자정부 표준프레임워크 - CKEditor 적용하기 file 졸리운_곰 2018.01.11 568
45 IntelliJ에서 SpringBoot 웹 프로젝트 생성하기 file 졸리운_곰 2017.11.14 222
44 파라미터 전송 - GET, POST 방식 file 졸리운_곰 2017.09.26 123
43 Velocity Template Engine 시작하기 file 졸리운_곰 2017.09.26 91
42 Migrating a Spring Web MVC application from JSP to AngularJS file 졸리운_곰 2017.09.26 68
41 [톰캣] server.xml 설정 file 졸리운_곰 2017.09.24 352
40 톰캣의 컨텍스트 외부로 경로 매핑하는 방법 졸리운_곰 2017.09.24 171
39 프레임 나뉜 페이지에서 새로고침시 페이지 유지하기 졸리운_곰 2017.09.17 77
» [Spring] 한국거래소의 주가 정보 가져오기 졸리운_곰 2017.08.10 416
37 [Ibatis] 부등호 <, > 의 표시 졸리운_곰 2017.07.06 193
36 동적 SQL mybatis 가을의곰 2017.06.10 116
35 [mybatis] foreach를 이용한 다중 insert 가을의곰 2017.06.10 413
34 mybatis (foreach문, in절) 가을의곰 2017.06.10 407
33 SW 릴리스를 간편하게 - Maven plugin + Jenkins file 졸리운_곰 2017.03.20 103
32 Migrating Spring Web MVC from JSP to AngularJS file 졸리운_곰 2017.02.07 207
31 Migrating a Spring Web MVC application from JSP to AngularJS file 졸리운_곰 2017.02.07 1513
30 Spring and Angular JS: A Secure Single Page Application 졸리운_곰 2017.02.06 426
29 스프링부트 소개 졸리운_곰 2017.02.06 190
28 Spring boot 시작하기 졸리운_곰 2017.02.06 247
27 [Java]Spring Boot를 사용한 web어플리케이션 만들기 file 졸리운_곰 2017.02.06 171
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED