SW0000J

크롤링 html 표시 완료, css 성공(팀 별로 구분 해야함)

1 +var express = require('express'); // web server 사용
2 +var fs = require('fs'); // file load
3 +
4 +var app = express();
5 +var port = 80;
6 +
7 +app.listen(port, function(){
8 + console.log('Server Start');
9 +})
10 +
11 +app.get('/', function(req, res){
12 + fs.readFile('WebTest.html', function(error, data){
13 + if(error){
14 + console.log(error);
15 + }else{
16 + res.writeHead(200, {'Content-Type': 'text/html'});
17 + res.end(data);
18 + }
19 + })
20 +})
...\ No newline at end of file ...\ No newline at end of file
1 +/* =============== ##공통 (common) ======================== */
2 +html,body{height:auto;}
3 +body{font-weight:normal;font-family:'맑은 고딕','Malgun Gothic',AppleSDGothicNeo-Regular,Arial,Helvetica,sans-serif;letter-spacing:-1px;}
4 +h1,h2,h3,h4,h5,h6{font-weight:normal;font-family:'맑은 고딕','Malgun Gothic',AppleSDGothicNeo-Regular,Arial,Helvetica,sans-serif;}
5 +p,li,dt,dd,span,strong,em,b,input,button,select,textarea,label,a{font-weight:normal;font-family:'맑은 고딕','Malgun Gothic',AppleSDGothicNeo-Regular,Arial,Helvetica,sans-serif;}
6 +a{display:inline-block;vertical-align:top;}
7 +
8 +h1,h2,h3,h4,h5,h6{margin:0;padding:0;font:inherit;font-weight:bold;}
9 +img{display:inline-block;border:0 none;vertical-align:top;}
10 +cite,code,dfn,del,em,ins,label,q,span,strong,b,i,time,mark,font,kbd,q,s,samp,small,strike,sub,sup,tt,var,u,center{display:inline-block;margin:0;padding:0;vertical-align:top;font:inherit;}
11 +address,cite,em,dfn{font:inherit;}
12 +b,i,strong,optgroup{font:inherit;font-weight:bold;}
13 +div,article,aside,main,menu,details,figure,figcaption,hgroup,footer,header,nav,section,object,summary,iframe{display:block;margin:0;padding:0;font:inherit;}
14 +
15 +
16 +/* =============== ##레이아웃 (layout) ======================== */
17 +
18 +body:not(.body-popup-win){min-width:1130px;}
19 +body.page-main,
20 +body.body-wide1300{min-width:1320px;}
21 +html,body{width:100%;height:100%;margin:0;padding:0;}
22 +body{font-weight:normal;font-size:1em;line-height:1.5em;font-family:sans-serif;color:#000;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;}
23 +
24 +/* list */
25 +dl,dd,ol,ul,li{margin:0;padding:0;}
26 +li{list-style-type:none;}
27 +
28 +/* link */
29 +a{font:inherit;color:inherit;text-decoration:none;cursor:pointer;}
30 +a{background-color:transparent;}
31 +a:link,
32 +a:visited,
33 +a:active,
34 +a:focus{color:inherit;}
35 +
36 +/* 공통 */
37 +[class*='title-type']{position:relative;display:inline-block;box-sizing:border-box;vertical-align:bottom;} /* height:36px; */
38 +[class*='title-type'] [class*='tit'],
39 +[class*='title-type'] [class*='txt']{vertical-align:bottom;}
40 +[class*='title-type'] [class*='tit']{position:relative;box-sizing:border-box;}
41 +[class*='title-type'] .tit{font-size:18px;line-height:22px;}
42 +[class*='title-type'].bold .tit{font-weight:bold;}
43 +[class*='title-type'] .txt{margin-left:6px;color:#666;font-size:10px;line-height:12px;letter-spacing:0;}
44 +[class*='title-type'] .tit+.txt{margin-left:6px;}
45 +
46 +/* =============== List type ======================== */
47 +[class*='list-type']{font-size:0;line-height:1;}
48 +[class*='list-type'] [class*='item']{position:relative;}
49 +[class*='list-type'] [class*='item']:after{content:'';display:block;clear:both;}
50 +[class*='list-type'] .img-con .img{overflow:hidden;position:relative;} /* background-color:#ccc; */
51 +[class*='list-type'] .img-con .img img{width:100%;height:auto;}
52 +[class*='list-type'] .img-con .label-box01{position:absolute;bottom:0;right:0;min-width:50px;height:35px;box-sizing:border-box;padding:8px 8px 7px;background-color:#fff;text-align:center;vertical-align:middle;}
53 +
54 +/* basic */
55 +.hidden-obj{position:absolute;visibility:hidden;top:-9999px;left:-9999px;}
56 +.blind{overflow:hidden;visibility:hidden;position:absolute;top:0;left:0;width:0;height:0;padding:0;font-size:0;line-height:0;}
57 +.display-none{display:none;}
58 +
59 +/* title-type04 */
60 +.title-type04[class*='arr'] .tit{padding-right:17px;}
61 +.title-type04 .tit{font-size:20px;line-height:22px;}
62 +
63 +.img-cover{overflow:hidden;}
64 +
65 +/* list-type038 */
66 +.list-type038 .list{border-top:1px solid #e5e5e5;}
67 +.list-type038 [class*='item-box']{}
68 +.list-type038 .item-box01{display:table;width:100%;border-bottom:1px solid #e5e5e5;}
69 +.list-type038 .item-box01>.img-con,
70 +.list-type038 .item-box01>.news-con,
71 +.list-type038 .item-box01>[class*='info-box']{display:table-cell;padding:30px 0;vertical-align:top;}
72 +.list-type038 .img-con{width:180px;}
73 +.list-type038 .img-con .img{width:170px;height:110px;}
74 +.list-type038 .news-con{max-height:110px;}
75 +.list-type038 .tit-news{font-weight:bold;font-size:18px;line-height:24px;}
76 +.list-type038 .tit-wrap:hover .tit-news{text-decoration:underline;}
77 +.list-type038 .lead{overflow:hidden;max-height:48px;margin-top:12px;color:#666;font-size:14px;line-height:24px;}
78 +.list-type038 .lead:empty{display:none;}
79 +.list-type038 .info-box01{width:110px;}
80 +.list-type038 .info-box01 .txt-time{padding-top:4px;color:#666;font-size:12px;line-height:14px;letter-spacing:0;}
81 +.list-type038 .item-box01 .info-box02{width:156px;padding:0 20px 0 0;vertical-align:middle;text-align:right;}
...\ No newline at end of file ...\ No newline at end of file
...@@ -2,16 +2,24 @@ var express = require('express'); ...@@ -2,16 +2,24 @@ var express = require('express');
2 var router = express.Router(); 2 var router = express.Router();
3 3
4 const getXports = require('../test1.js'); 4 const getXports = require('../test1.js');
5 -const Zum = require('../test2.js'); 5 +const getZum = require('../test2.js');
6 -const Chosun = require('../test3.js'); 6 +const getChosun = require('../test3.js');
7 -const zum = Zum.zum; 7 +const getYna = require('../test4.js')
8 -const chosun = Chosun.chosun;
9 8
10 let xports; 9 let xports;
10 +let zum;
11 +let chosun;
12 +let yna;
11 (async function() { 13 (async function() {
12 try { 14 try {
13 - xports = await getXports(); 15 + xports = await getXports();
14 - console.log(xports); 16 + zum = await getZum();
17 + chosun = await getChosun();
18 + yna = await getYna();
19 + console.log(xports);
20 + console.log(zum);
21 + console.log(chosun);
22 + console.log(yna);
15 } catch (e) { 23 } catch (e) {
16 return console.log(e); 24 return console.log(e);
17 } 25 }
...@@ -23,13 +31,9 @@ router.get('/', function(req, res, next){ ...@@ -23,13 +31,9 @@ router.get('/', function(req, res, next){
23 xports : xports, 31 xports : xports,
24 zum : zum, 32 zum : zum,
25 chosun : chosun, 33 chosun : chosun,
26 - // yna : yna 34 + yna : yna
27 }); 35 });
28 }); 36 });
29 37
30 -console.log("aaaa\n"); 38 +console.log("started\n");
31 -for(var i in xports){
32 - console.log("aaaa\n");
33 - console.log(i.datetime);
34 -}
35 module.exports = router; 39 module.exports = router;
......
1 const axios = require("axios"); // 웹 서버 요청 모듈 1 const axios = require("axios"); // 웹 서버 요청 모듈
2 const cheerio = require("cheerio"); // Load한 것을 jQuery처럼 사용 2 const cheerio = require("cheerio"); // Load한 것을 jQuery처럼 사용
3 -//const Iconv = require('iconv').Iconv; // 한글 깨짐 방지
4 -//const iconv = new Iconv('EUC-KR', 'UTF-8//IGNORE');
5 3
6 const url = "http://www.xportsnews.com/?ac=article_list&cate_indexno=12" 4 const url = "http://www.xportsnews.com/?ac=article_list&cate_indexno=12"
7 5
...@@ -26,7 +24,7 @@ const getXports = async () => { ...@@ -26,7 +24,7 @@ const getXports = async () => {
26 24
27 $bodyList.each(function(i, elem) { 25 $bodyList.each(function(i, elem) {
28 ulList[i] = { 26 ulList[i] = {
29 - url: 'xportsnews.com' + $(this).find('div.thumb > a').attr('href'), 27 + url: 'http://www.xportsnews.com' + $(this).find('div.thumb > a').attr('href'),
30 image_url: $(this).find('div.thumb > a > img').attr('src'), 28 image_url: $(this).find('div.thumb > a > img').attr('src'),
31 title: $(this).find('dl.dlist > dt > a').text(), 29 title: $(this).find('dl.dlist > dt > a').text(),
32 summary: $(this).find('dd').text().slice(1, -2), 30 summary: $(this).find('dd').text().slice(1, -2),
......
...@@ -11,24 +11,35 @@ const getHtml = async () => { ...@@ -11,24 +11,35 @@ const getHtml = async () => {
11 } 11 }
12 }; 12 };
13 13
14 -getHtml() 14 +
15 - .then(html => { 15 +const getXports = async () => {
16 - let ulList = []; 16 +
17 - const $ = cheerio.load(html.data); 17 + return new Promise((resolve, reject) => {
18 - const $bodyList = $("div.major_news > ul").children("ul.no_reply > li.large"); 18 + getHtml()
19 + .then(html => {
20 + let ulList = [];
21 + //console.log(html.data);
22 + const $ = cheerio.load(html.data);
23 + const $bodyList = $("div.major_news > ul").children("ul.no_reply > li.large");
19 24
20 $bodyList.each(function(i, elem) { 25 $bodyList.each(function(i, elem) {
21 ulList[i] = { 26 ulList[i] = {
22 - url: 'news.zum.com' + $(this).find('div.img > a').attr('href'), 27 + url: '//news.zum.com' + $(this).find('div.img > a').attr('href'),
23 image_url: $(this).find('div.img > a > img').attr('src'), 28 image_url: $(this).find('div.img > a > img').attr('src'),
24 title: $(this).find('div.txt > div.title > a').text(), 29 title: $(this).find('div.txt > div.title > a').text(),
25 summary: $(this).find('div.txt > div.content > a').text(),//.slice(0, -29) 30 summary: $(this).find('div.txt > div.content > a').text(),//.slice(0, -29)
26 datetime: $(this).find('div.txt > div.content > span.etc').text() 31 datetime: $(this).find('div.txt > div.content > span.etc').text()
27 }; 32 };
28 - //console.log(ulList[i]) // list object checking code 33 + //console.log(ulList[i]) // list object checking code
29 - }); 34 + });
35 +
36 + const data = ulList.filter(n => n.title);
37 + return data;
38 + //return ulList;
39 + }).then(data => {
40 + resolve(data);
41 + });
42 +});
43 +};
30 44
31 - const data = ulList.filter(n => n.title); 45 +module.exports = getXports;
32 - return data;
33 - //return ulList;
34 - });
......
...@@ -11,11 +11,16 @@ const getHtml = async () => { ...@@ -11,11 +11,16 @@ const getHtml = async () => {
11 } 11 }
12 }; 12 };
13 13
14 -getHtml() 14 +
15 - .then(html => { 15 +const getXports = async () => {
16 - let ulList = []; 16 +
17 + return new Promise((resolve, reject) => {
18 + getHtml()
19 + .then(html => {
20 + let ulList = [];
21 + //console.log(html.data);
17 const $ = cheerio.load(html.data); 22 const $ = cheerio.load(html.data);
18 - const $bodyList = $("div.list_body > div.list_content").children("dl.list_item"); 23 + const $bodyList = $("div.list_body > div.list_content").children("dl.list_item");
19 24
20 $bodyList.each(function(i, elem) { 25 $bodyList.each(function(i, elem) {
21 ulList[i] = { 26 ulList[i] = {
...@@ -28,7 +33,13 @@ getHtml() ...@@ -28,7 +33,13 @@ getHtml()
28 //console.log(ulList[i]) // list object checking code 33 //console.log(ulList[i]) // list object checking code
29 }); 34 });
30 35
31 - const data = ulList.filter(n => n.title); 36 + const data = ulList.filter(n => n.title);
32 - return data; 37 + return data;
33 - //return ulList; 38 + //return ulList;
34 - }); 39 + }).then(data => {
40 + resolve(data);
41 + });
42 +});
43 +};
44 +
45 +module.exports = getXports;
......
1 +const axios = require("axios");
2 +const cheerio = require("cheerio");
3 +
4 +const url = "https://www.yna.co.kr/sports/baseball"
5 +
6 +const getHtml = async () => {
7 + try {
8 + return await axios.get(url);
9 + } catch (error) {
10 + console.error(error);
11 + }
12 +};
13 +
14 +
15 +const getXports = async () => {
16 +
17 + return new Promise((resolve, reject) => {
18 + getHtml()
19 + .then(html => {
20 + let ulList = [];
21 + //console.log(html.data);
22 + const $ = cheerio.load(html.data);
23 + const $bodyList = $("div.list-type038 ul.list li").children("div.item-box01");
24 +
25 + $bodyList.each(function(i, elem) {
26 + ulList[i] = {
27 + datetime: $(this).find('span.txt-time').text(),
28 + image_url: $(this).find('figure.img-con a img').attr('src'),
29 + url: $(this).find('div.news-con a').attr('href'),
30 + title: $(this).find('div.news-con strong').text(),
31 + summary: $(this).find('div.news-con p').text()
32 + };
33 + //console.log(ulList[i]) // list object checking code
34 + });
35 +
36 + const data = ulList.filter(n => n.title);
37 + return data;
38 + //return ulList;
39 + }).then(data => {
40 + resolve(data);
41 + });
42 +});
43 +};
44 +
45 +module.exports = getXports;
1 +@charset "utf-8";
2 +/*************************************************
3 +프로젝트명 : 연합뉴스 국문 모바일 홈페이지 (2019)
4 +commnet : default
5 +original : /global/guide/v01/css/default_v.0.2.css
6 +version : 0.2
7 +modify : 2019-04-01
8 +*************************************************/
9 +
10 +html,body{width:100%;height:100%;margin:0;padding:0;}
11 +body{font-weight:normal;font-size:1em;line-height:1.5em;font-family:sans-serif;color:#000;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;}
12 +
13 +h1,h2,h3,h4,h5,h6{margin:0;padding:0;font:inherit;font-weight:bold;}
14 +img{display:inline-block;border:0 none;vertical-align:top;}
15 +cite,code,dfn,del,em,ins,label,q,span,strong,b,i,time,mark,font,kbd,q,s,samp,small,strike,sub,sup,tt,var,u,center{display:inline-block;margin:0;padding:0;vertical-align:top;font:inherit;}
16 +address,cite,em,dfn{font:inherit;}
17 +b,i,strong,optgroup{font:inherit;font-weight:bold;}
18 +
19 +blockquote,p{margin:0;padding:0;font:inherit;}
20 +pre{overflow:auto;margin:0;padding:0;font:inherit;}
21 +mark{background:#fff;font:inherit;/* color:#000; */} /* IE 8/9 */
22 +sub,sup{position:relative;font-size:0.75em;vertical-align:baseline;font:inherit;}
23 +abbr[title]{border-bottom:1px dotted;font:inherit;}
24 +hr{display:none;}
25 +
26 +div,article,aside,main,menu,details,figure,figcaption,hgroup,footer,header,nav,section,object,summary,iframe{display:block;margin:0;padding:0;font:inherit;}
27 +iframe{overflow:hidden;border:none;}
28 +audio,canvas,progress,video{display:inline-block;margin:0;padding:0;vertical-align:baseline;}
29 +audio:not([controls]){display:none;height:0;}
30 +[hidden],template{display:none;}
31 +svg:not(:root){overflow:hidden;} /* IE 9~11 */
32 +
33 +/* table */
34 +table{border-collapse:collapse;border-spacing:0;}
35 +caption{overflow:hidden;visibility:hidden;width:0;height:0;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999px;}
36 +th,td{margin:0;padding:0;font:inherit;text-align:left;vertical-align:middle;}
37 +
38 +/* list */
39 +dl,dd,ol,ul,li{margin:0;padding:0;}
40 +li{list-style-type:none;}
41 +
42 +/* form */
43 +form{margin:0;padding:0;}
44 +fieldset{margin:0;padding:0;border:0 none;}
45 +legend{overflow:hidden;visibility:hidden;position:absolute;top:0;left:0;width:0;height:0;margin:0;padding:0;font-size:0;line-height:0;}
46 +input,button,select,textarea{margin:0;padding:0;font:inherit;vertical-align:top;}
47 +input.text{padding:4px 7px 4px;border:1px solid #ccc;font-size:12px;line-height:1;color:#000;}
48 +input.readonly{background-color:#eee;}
49 +input.check,input.radio{width:13px;height:13px;margin:2px 7px 0 0;padding:0;}
50 +input[type="button"],
51 +input[type="reset"],
52 +input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
53 +input[type="number"]::-webkit-inner-spin-button,
54 +input[type="number"]::-webkit-outer-spin-button{height:auto;}
55 +input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box;}
56 +input[type="search"]::-webkit-search-cancel-button,
57 +input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
58 +textarea{margin:0;padding:0;border:1px solid #ccc;font-size:12px;color:#000;resize:none;}
59 +select{height:20px;margin:0;border:1px solid #ccc;outline:none;background-color:#fff;font-size:12px;color:#000;vertical-align:top;text-transform:none;}
60 +button{overflow:visible;text-transform:none;cursor:pointer;}
61 +button::-moz-focus-inner,
62 +input::-moz-focus-inner{padding:0;border:0;}
63 +button[disabled],html input[disabled]{cursor:default;}
64 +
65 +/* link */
66 +a{font:inherit;color:inherit;text-decoration:none;cursor:pointer;}
67 +a{background-color:transparent;} /* IE10 active transparent remove */
68 +a:link,
69 +a:visited,
70 +a:active,
71 +a:focus{color:inherit;}
72 +
73 +/* selection */
74 +/* PC 국문 개편에서는 설정 안 함 */
75 +/* ::selection{opacity:0.1;background:#fff2a8;}
76 +::-moz-selection{background:#fff2a8;} */
77 +
78 +/* skip navigation */
79 +#skipNav{position:relative;z-index:800;}
80 +#skipNav a{overflow:hidden;position:absolute;width:1px;height:1px;margin-bottom:-1px;}
81 +#skipNav a:focus,#skipNav a:active{overflow:auto;display:block;position:absolute;width:100%;height:30px;margin:0;background-color:#fff000;font-weight:bold;font-size:14px;line-height:30px;color:#000;text-align:center;z-index:100;}
82 +
83 +/* clear */
84 +.clear:after{content:".";visibility:hidden;display:block;clear:both;height:0;font-size:0;line-height:0;}
85 +.clear{display:inline-block;}
86 +*html .clear{height:0;}
87 +.clear{display:block;}
88 +.clear-both{clear:both;}
89 +
90 +/* basic */
91 +.hidden-obj{position:absolute;visibility:hidden;top:-9999px;left:-9999px;}
92 +.blind{overflow:hidden;visibility:hidden;position:absolute;top:0;left:0;width:0;height:0;padding:0;font-size:0;line-height:0;}
93 +.display-none{display:none;}
94 +.for-mobile{display:none}
95 +.visible-hidden{visibility:hidden;}
96 +.word-break{word-break:break-all !important;}
97 +.text-indent{overflow:hidden;display:block;text-indent:-9999px;}
98 +.text-c{text-align:center !important;}
99 +.text-l{text-align:left !important;}
100 +.text-r{text-align:right !important;}
101 +.vt-t{vertical-align:top !important;}
102 +.vt-m{vertical-align:middle !important;}
103 +.vt-b{vertical-align:bottom !important;}
104 +.fw-b{font-weight:bold !important;}
105 +.fw-n{font-weight:normal !important;}
106 +.fl-l{float:left;}
107 +.fl-r{float:right;}
108 +.fn{float:none !important;}
109 +.bg-none{background:none !important;}
110 +.bd-n{border:none !important;}
111 +.bd-t{border-top:none !important;}
112 +.bd-r{border-right:none !important;}
113 +.bd-b{border-bottom:none !important;}
114 +.bd-l{border-left:none !important;}
115 +.of-a{overflow:auto;}
116 +.of-h{overflow:hidden;}
117 +.scroll-x{overflow-x:scroll;}
118 +.scroll-y{overflow-y:scroll;}
119 +.mg-none{margin:0 !important;}
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,35 +3,128 @@ ...@@ -3,35 +3,128 @@
3 3
4 <head> 4 <head>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 - <title>ossswoo.tk</title> 6 + <link rel="stylesheet" href="/stylesheets/style.css" />
7 + <title>YaguMoa[ossswoo.tk]</title>
7 </head> 8 </head>
8 9
9 - <body> 10 + <body class = "body-news-list page-sports body-static" data-nav="sports">
10 - <div class = 'main'> 11 + <div id = "container" class = "wrap-container">
11 - <div class = 'center'> 12 + <div class = "container">
12 - <div> 13 + <div class = 'content03 width1100 line01'>
13 - <% for(var i of xports) { %> 14 + <div class = "section01">
14 - <li> 15 + <div class = 'title-page02'>
15 - <div class='item'> 16 + <h1 class = "title-type04 bold">
16 - <div class='info'> 17 + <span class = "tit">야구 모아</span>
17 - <span class='time'><%= i.datetime %></span> 18 + </h1>
18 - </div>
19 - <div class='img'>
20 - <a>
21 - <img src = <%= i.image_url %>>
22 - </a>
23 - </div>
24 - <div class='news'>
25 - <a href = <%= i.url %>>
26 - <strong><%= i.title %></strong>
27 - </a>
28 - <p>
29 - <%= i.summary %>
30 - </p>
31 - </div>
32 </div> 19 </div>
33 - </li> 20 + <section class = 'box-type box-latest01'>
34 - <% } %> 21 + <strong class="hidden-obj">야구 기사 목록</strong>
22 + <div class = "list-type038">
23 + <ul class = "list">
24 + <% for(var i of xports) { %>
25 + <li>
26 + <div class='item-box01'>
27 + <div class='info-box01'>
28 + <span class="blind">송고시간</span>
29 + <span class='txt-time'><%= i.datetime %></span>
30 + </div>
31 + <% if (i.image_url != undefined) { %>
32 + <figure class='img-con'>
33 + <a class = "img img-cover imgLiquid_bgSize imgLiquid_ready" style = "background-size: cover; background-position: center top; background-repeat: no-repeat;" href = <%= i.url %> >
34 + <img src = <%= i.image_url %>>
35 + </a>
36 + </figure>
37 + <% } %>
38 + <div class='news-con'>
39 + <a class = 'tit-wrap' href = <%= i.url %>>
40 + <strong class = 'tit-news'><%= i.title %></strong>
41 + </a>
42 + <p class = "lead">
43 + <%= i.summary %>
44 + </p>
45 + </div>
46 + </div>
47 + </li>
48 + <% } %>
49 + <% for(var i of zum) { %>
50 + <li>
51 + <div class='item-box01'>
52 + <div class='info-box01'>
53 + <span class="blind">송고시간</span>
54 + <span class='txt-time'><%= i.datetime %></span>
55 + </div>
56 + <% if (i.image_url != undefined) { %>
57 + <figure class='img-con'>
58 + <a class = "img img-cover imgLiquid_bgSize imgLiquid_ready" style = "background-size: cover; background-position: center top; background-repeat: no-repeat;" href = <%= i.url %> >
59 + <img src = <%= i.image_url %>>
60 + </a>
61 + </figure>
62 + <% } %>
63 + <div class='news-con'>
64 + <a class = 'tit-wrap' href = <%= i.url %>>
65 + <strong class = 'tit-news'><%= i.title %></strong>
66 + </a>
67 + <p class = "lead">
68 + <%= i.summary %>
69 + </p>
70 + </div>
71 + </div>
72 + </li>
73 + <% } %>
74 + <% for(var i of chosun) { %>
75 + <li>
76 + <div class='item-box01'>
77 + <div class='info-box01'>
78 + <span class="blind">송고시간</span>
79 + <span class='txt-time'><%= i.datetime %></span>
80 + </div>
81 + <% if (i.image_url != undefined) { %>
82 + <figure class='img-con'>
83 + <a class = "img img-cover imgLiquid_bgSize imgLiquid_ready" style = "background-size: cover; background-position: center top; background-repeat: no-repeat;" href = <%= i.url %> >
84 + <img src = <%= i.image_url %>>
85 + </a>
86 + </figure>
87 + <% } %>
88 + <div class='news-con'>
89 + <a class = 'tit-wrap' href = <%= i.url %>>
90 + <strong class = 'tit-news'><%= i.title %></strong>
91 + </a>
92 + <p class = "lead">
93 + <%= i.summary %>
94 + </p>
95 + </div>
96 + </div>
97 + </li>
98 + <% } %>
99 + <% for(var i of yna) { %>
100 + <li>
101 + <div class='item-box01'>
102 + <div class='info-box01'>
103 + <span class="blind">송고시간</span>
104 + <span class='txt-time'><%= i.datetime %></span>
105 + </div>
106 + <% if (i.image_url != undefined) { %>
107 + <figure class='img-con'>
108 + <a class = "img img-cover imgLiquid_bgSize imgLiquid_ready" style = "background-size: cover; background-position: center top; background-repeat: no-repeat;" href = <%= i.url %> >
109 + <img src = <%= i.image_url %>>
110 + </a>
111 + </figure>
112 + <% } %>
113 + <div class='news-con'>
114 + <a class = 'tit-wrap' href = <%= i.url %>>
115 + <strong class = 'tit-news'><%= i.title %></strong>
116 + </a>
117 + <p class = "lead">
118 + <%= i.summary %>
119 + </p>
120 + </div>
121 + </div>
122 + </li>
123 + <% } %>
124 + </ul>
125 + </div>
126 + </section>
127 + </div>
35 </div> 128 </div>
36 </div> 129 </div>
37 </div> 130 </div>
......