본문 바로가기

카테고리 없음

jsoup 영화사이트 차트

// java

public class MovieManager { 

    public List<MovieVO> getCGVDate()throws IOException{ 
        List<MovieVO> list = new ArrayList<MovieVO>(); 

        Document doc = Jsoup.connect("http://www.cgv.co.kr/movies/").get(); 

         /*--------------------------------------------------------------- 
         * 영화 제목 취득 
         ---------------------------------------------------------------* 
         * <div class="box-contents"> 
            <a href="/movies/detail-view/?midx=80489"> 
                <strong class="title">블랙 팬서</strong> 
            </a> 
         ---------------------------------------------------------------*/ 
        Elements titleEle = doc.select("div.box-contents strong.title"); 

        // 타이틀 가져옴 
        /*for (int i = 0; i < titleEle.size(); i++) { 
            Element titleE = titleEle.get(i); 
            System.out.println(titleE.text()); 
        }*/ 


        /*--------------------------------------------------------------- 
         * 영화 좋아요 수 취득 
         * --------------------------------------------------------------- 
         * <div class="box-contents"> 
             <span class="like"> 
                 <button class="btn-like" value="80489">영화 찜하기</button> 
                    <span class="count"> 
                        <strong><i>23,790</i><span>명이 선택</span></strong> 
                 <i class="corner-RT"></i><i class="corner-LT"></i><i class="corner-LB"></i><i class="corner-RB"></i><i class="corner-arrow"></i> 
         </span> 
         * 
         ---------------------------------------------------------------*/ 

        Elements likeEle = doc.select("div.box-contents span.like span.count strong i"); 

        for (int i = 0; i < 7; i++) { 
            Element titleE =  titleEle.get(i); 
            Element likeE = likeEle.get(i); 

            String title = titleE.text(); 
            //String like = likeE.text(); 
            int like = Integer.parseInt(likeE.text().replace(",", "")); 

            System.out.println("title : " + title); 
            System.out.println("like : " + like); 

            MovieVO mv = new MovieVO(); 
            mv.setTitle(title); 
            mv.setLike(like); 

            list.add(mv); 
        } 
        return list; 
    } 
}

// dto

public class MovieVO { 

private String title; 
private int like; 

public String getTitle() { 
return title; 

public void setTitle(String title) { 
this.title = title; 

public int getLike() { 
return like; 

public void setLike(int like) { 
this.like = like; 


// jsp

<%@page import="sam.MovieVO"%> 
<%@page import="java.util.List"%> 
<%@page import="sam.MovieManager"%> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
     


<% 
    MovieManager mm = new MovieManager(); 
    List<MovieVO> list = mm.getCGVDate(); 

    //하이차트 형식 
    //json 생성 
    String jsonLike = "["; 

    for (MovieVO m : list) { 
        jsonLike += "{ name:'" + m.getTitle() + "', y:" + m.getLike() + "}, "; 
    } 
    //맨 마지막 , 제거 
    jsonLike.substring(0, jsonLike.lastIndexOf(",")); 

    jsonLike += "]"; 

    System.out.println("jsonLike : " + jsonLike); 
    request.setAttribute("jsonLike", jsonLike); 

%> 


     
     
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
<script src="https://code.highcharts.com/highcharts.js"></script> 
<script src="https://code.highcharts.com/modules/exporting.js"></script> 
<script src="https://code.highcharts.com/modules/export-data.js"></script> 
<script src="https://code.jquery.com/jquery-3.3.1.js"></script> 


</head> 
<body> 


<div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div> 


<script type="text/javascript"> 

Highcharts.chart('container', { 
  chart: { 
    plotBackgroundColor: null, 
    plotBorderWidth: null, 
    plotShadow: false, 
    type: 'pie' 
  }, 
  title: { 
    text: '영화가 좋아요' 
  }, 
  tooltip: { 
    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' 
  }, 
  plotOptions: { 
    pie: { 
      allowPointSelect: true, 
      cursor: 'pointer', 
      dataLabels: { 
        enabled: true, 
        format: '<b>{point.name}</b>: {point.percentage:.1f} %', 
        style: { 
          color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' 
        } 
      } 
    } 
  }, 
  series: [{ 
    name: '선호도', 
    colorByPoint: true, 
    data: <%=request.getAttribute("jsonLike") %> 
       
  }] 
}); 
</script> 



</body> 
</html>