정리노트/필요한것
크롤링 [JAVA, JSP]
컵라면만두세트
2022. 5. 31. 09:17
환경 : eclipse , hichart, codepen
- codepen
- hichart
Interactive javascript charts library
- jsoup jar 파일 다운로드
- 크롤링하기 위한 웹페이지 → 소스보기 클릭
- 크롤링을 위한 예제
/*
<div class="box-contents">
<a href="/movies/detail-view/?midx=85813">
<strong class="title">범죄도시 2</strong>
</a>
<div class="score">
<strong class="percent">예매율<span>44.2%</span></strong>
*/
- Mainclass
해당 jsoup connect객체를 생성 → 크롤링 하고자하는 url 선택
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("<http://www.cgv.co.kr/movies/?lt=1&ft=0>").get();
}
- 접근 방법
Elements titles = doc.select("div.box-contents strong.title");
Elements percents = doc.select("div.box-contents div.score strong.percent span");
- 출력 - 제목, 예매율
for(int i=0; i<19; i++) {
Element title = titles.get(i);
System.out.println(title.text());
Element percent = percents.get(i);
System.out.println(percent.text());
}
- MovieChart
public class MovieChart {
public static List getCGVdata() throws Exception {
Document doc = Jsoup.connect("<http://www.cgv.co.kr/movies/?lt=1&ft=0>").get();
Elements titles = doc.select("div.box-contents strong.title");
Elements percents = doc.select("div.box-contents div.score strong.percent span");
List list = new ArrayList();
for(int i=0; i<19; i++) {
Element title = titles.get(i);
Element percent = percents.get(i);
System.out.println(title.text() + " " + percent.text());
String t = title.text();
// 44.2% -> 44.2 만가지고오고싶다
double p =Double.parseDouble(percent.text().replace("%", ""));
list.add(new MovieVo( t,p ));
}
return list;
}
}
- Movievo → getter setter
- index.jsp
<%@page import="MovieDatas.MovieChart"%>
<%@page import="dto.MovieVo"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List list = MovieChart.getCGVdata();
for(MovieVo v : list){
System.out.println(v.toString());
}
// list -> json
String jsonData = "[";
for(MovieVo v : list){
jsonData += "{ name:'" + v.getTitle() + "', y:" + v.getPercent() + "}," ;
}
jsonData = jsonData.substring(0, jsonData.lastIndexOf(","));
jsonData += "]";
System.out.println(jsonData);
// 여기서 담으면 js에서 활용할 수 있다. 키값으로 통해서
request.setAttribute("jsonData", jsonData);
%>
Pie charts are very popular for showing a compact overview of a composition or comparison. While they can be harder to read than column charts, they remain a popular choice for small datasets.
Highcharts.chart('container', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
title: {
text: '2022.05.27 movie chart'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
accessibility: {
point: {
valueSuffix: '%'
}
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
series: [{
name: 'Brands',
colorByPoint: true,
data: <%=request.getAttribute("jsonData")%>
}]
});