안녕하세요. 현재 http://sir.kr/g5_tip/3716?sfl=wr_subject%7C%7Cwr_content&stx=snoo 이분꺼로,
http://www.kbs.co.kr/schedule/schedule_channel.html KBS 편성표에서 [재]라고 써있는 재방송관련 프로그램명 / 날짜 / 시간 을 가져와서 DB로 저장하고 싶은데요.
어떻게해야될까요?
아래꺼는 KBS꺼 필요한거 소스인데요.
Copy
<meta http-equiv="Content-Type" content="text/html;charset=euc-kr"><meta http-equiv="X-UA-Compatible" content="IE=edge"><script type="text/javascript" src="http://www.kbs.co.kr/jquery/jquery-1.8.3.min.js"></script><script type="text/javascript" src="http://www.kbs.co.kr/jquery/jquery.easing.1.3.min.js"></script><script type="text/javascript" src="http://www.kbs.co.kr/jquery/jquery.cookie.min.js"></script><script type="text/javascript" charset="euc-kr" src="http://www.kbs.co.kr/jquery/jquery.snsShare.min.js"></script><script type="text/javascript" charset="euc-kr" src="http://www.kbs.co.kr/include/inc13/service/service.obj.js"></script><script type="text/javascript" charset="euc-kr" src="http://www.kbs.co.kr/common/inc13/common.min.js"></script><link rel="stylesheet" type="text/css" href="http://www.kbs.co.kr/css/inc/inc13/common.css"><link rel="shortcut icon" href="http://www.kbs.co.kr/favicon.ico"><meta property="og:image" content="http://img.kbs.co.kr/cms/image/kbs_facebook.jpg"><script type="text/javascript" src="http://www.kbs.co.kr/jquery/jquery.easing.1.3.min.js"></script><script src="http://code.jquery.com/ui/1.8.18/jquery-ui.min.js" type="text/javascript"></script><script type="text/javascript" src="http://www.kbs.co.kr/jquery/jquery.easing.1.3.min.js"></script><script src="http://code.jquery.com/ui/1.8.18/jquery-ui.min.js" type="text/javascript"></script><script type="text/javascript" charset="euc-kr" src="/js/2015_common.js"></script><script type="text/javascript" charset="euc-kr" src="/js/jquery.printGnb.min.js"></script><script type="text/javascript" charset="euc-kr" src="http://www.kbs.co.kr/jquery/jquery.slides.min.js"></script><script type="text/javascript" charset="euc-kr" src="/js/Gnb_string_v3.obj.js"></script><script type="text/javascript" charset="euc-kr" src="/js/Gnb_script_v3_edit.js"></script><script type="text/javascript" charset="euc-kr" src="/js/top_navi_common.js"></script><link rel="stylesheet" type="text/css" href="/css/inc/gnb15/common.css"><link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" type="text/css" media="all" /><link rel="shortcut icon" href="http://www.kbs.co.kr/favicon.ico"><meta property="og:image" content="http://img.kbs.co.kr/cms/image/kbs_facebook.jpg"><link rel="stylesheet" type="text/css" href="http://www.kbs.co.kr/css/kbs_css_m/css_m_15/2015_schedule.css"><script language="javascript" type="text/javascript">//<![CDATA[var serverTime = "2016-05-01 00:32:52"; // "2016-05-01T00:32:52Z";//]]></script><script type="text/javascript" charset="euc-kr" src="http://www.kbs.co.kr/js/jquery.printBroadcast.js"></script><script language="javascript" type="text/javascript">//<![CDATA[var changeCalender = function(today){ var week = new Array('일', '월', '화', '수', '목', '금', '토'); $(".day_list>li").each(function(){ if(this.className.indexOf("prev")>=0 || this.className.indexOf("next")>=0){ if(this.className.indexOf("prev")>=0){ var speed = -this.className.replace("prev_",""); }else if(this.className.indexOf("next")>=0){ var speed = this.className.replace("next_",""); } var a_myDate = new Date(today); a_myDate.setDate(a_myDate.getDate() + parseInt(speed)); var a_month = a_myDate.getMonth()+1; if(a_month < 10){ a_month = "0" + a_month; } var a_day = a_myDate.getDate(); if(a_day < 10){ a_day = "0" + a_day; } var a_year = a_myDate.getFullYear(); $(this).html('<a href="#" class="'+this.className+'" onclick="changeCalender(\''+a_year +"/"+a_month+"/"+a_day+'\');return false;"><span class="date">'+a_day+'</span><span class="day">'+week[a_myDate.getDay()]+'</span></a>'); }else if(this.className == "today"){ var myDate = new Date(today); var month = myDate.getMonth()+1; if(month < 10){ month = "0" + month; } var day = myDate.getDate(); if(day < 10){ day = "0" + day; } var year = myDate.getFullYear(); $(this).html('<a href="#" class="today"><span class="date">'+year +"."+month+"."+day +'</span><span class="day">('+week[myDate.getDay()]+')</span></a>'); } }); schedule_cannel_init(today);}var today_myDate = new Date(serverTime);today_myDate.setHours(today_myDate.getHours() - 14);var today_month = today_myDate.getMonth()+1;if(today_month < 10){ today_month = "0" + today_month;}var today_day = today_myDate.getDate();if(today_day < 10){ today_day = "0" + today_day;}var today_year = today_myDate.getFullYear();function getTodayList(date){ var today = today_year + "/" + today_month + "/" + today_day if(date) { changeCalender(date); }else{ changeCalender(today); setTimeout(function(){scrollMoveOn()}, 1000); }}$(function() { var yoil = getDate_now.getDay(); switch(yoil){ case 1 : yoil = '4D'; break; case 2 : yoil = '3D'; break; case 3 : yoil = '2D'; break; case 4 : yoil = '1D'; break; case 5 : yoil = '0D'; break; case 6 : yoil = '9D'; break; case 7 : yoil = '8D'; break; } $( "#datepicker" ).datepicker({ closeText: '닫기', prevText: '이전달', nextText: '다음달', currentText: '오늘', monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], monthNamesShort: ['1월','2월','3월','4월','5월','6월', '7월','8월','9월','10월','11월','12월'], dayNames: ['일','월','화','수','목','금','토'], dayNamesShort: ['일','월','화','수','목','금','토'], dayNamesMin: ['일','월','화','수','목','금','토'], weekHeader: 'Wk', dateFormat: 'yy/mm/dd', firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: '', changeMonth: true, changeYear: true, showButtonPanel: true,// minDate: '-6M+3D', minDate: new Date(today_myDate.getFullYear(), today_myDate.getMonth()-5, 1), maxDate: yoil }); $( "#datepicker" ).on("change",function(){ changeCalender(this.value); });});//]]></script></head><body><!-- 본문 시작 --> <div id="container" class="container_schedule"> <div class="content"> <div class="schedule_wrap schedule_time"> <div class="list_day_wrap"> <ul class="btn_day_wrap"> <li class="btn_calendar"><a href="#"><input type="text" id="datepicker" class="it " title="" value="" name=""/>달력</a></li> <li class="btn_today"><a href="#" onclick="getTodayList();return false;">오늘</a></li> </ul> <!-- 날짜리스트 --> <ul class="day_list"> <li class="prev_3"><a href="#"><span class="date">28</span><span class="day">금</span></a></li> <li class="prev_2"><a href="#"><span class="date">29</span><span class="day">토</span></a></li> <li class="prev_1"><a href="#"><span class="date">30</span><span class="day">일</span></a></li> <li class="today"><a href="#"><span class="date">2014.12.01</span><span class="day">(월)</span></a></li> <li class="next_1"><a href="#"><span class="date">02</span><span class="day">화</span></a></li> <li class="next_2"><a href="#"><span class="date">03</span><span class="day">수</span></a></li> <li class="next_3"><a href="#"><span class="date">04</span><span class="day">목</span></a></li> </ul><!-- //날짜리스트 --> <ul class="list_type_wrap"> <li class="btn_time"><a href="http://www.kbs.co.kr/schedule/schedule_time.html" title="다채널">동시간 다채널 편성표 보기</a></li> <li class="btn_channel on"><a href="http://www.kbs.co.kr/schedule/schedule_channel.html" title="채널별">채널별 편성표 보기</a></li> </ul> </div> <!-- 프로그램 리스트 --> <div class="list_program_wrap ch11"> <ul class="list_program"> </ul> </div><!-- //프로그램 리스트 --><script language="javascript" type="text/javascript">//<![CDATA[var default_channel = '12';var default_date = today_year+today_month.toString()+today_day;var getAuthURI = function(planned_day , channel_code){ return 'http://smartapi.kbs.co.kr/kbshome/broadcast/schedule/home_list.json?tstamp=1462030372&ssign=KXD5yXijsrNeY1YEQSf5GLhLTBarAL9Lr8vIWb03dNs=&programming_local_station_code_matching=00&planned_day='+planned_day+'&channel_code='+ channel_code }function schedule_cannel_init(setDate){ setDate = setDate.replace(/[/]/g,""); //alert(default_channel +"---"+setDate) $(".list_program").printBroadcast(default_channel,'channel', getAuthURI(setDate,default_channel),function(elem){});}function gup( name ){ name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return null; else return results[1];}if(gup("channel")){ default_channel = gup("channel"); $("#tit_channel_img")[0].src = "http://img.kbs.co.kr/cms/image/main_img15/tit_channel_"+default_channel+".gif"}$(function(){getTodayList();setTimeout(function(){scrollMoveOn()}, 1000);})function scrollMoveOn(){ var top = ($('.list_program > li.on').offset() || { "top": NaN }).top; $("body, html").animate({scrollTop: top});}$(".channel_info_wrap .btn_mov_channel").click(function(){ if(!this.now) return false; default_channel = this.now;// schedule_cannel_init(default_date); var settingDate = $(".today > span.date").text(); settingDate = settingDate.replace(/[.]/g,"/"); schedule_cannel_init(settingDate); $("#tit_channel_img")[0].src = "http://img.kbs.co.kr/cms/image/main_img15/tit_channel_"+this.now+".gif" $('.list_program_wrap').attr('class', 'list_program_wrap ch'+default_channel); getTodayList(settingDate); setTimeout(function(){scrollMoveOn()}, 1000); return false;});$(".list_channel a").click(function(){ var channel = this.getAttribute('channel_code'); var actionBtn = $(".channel_info_wrap .btn_mov_channel")[0]; $("#tit_channel_select").html(this.innerHTML); actionBtn.now = channel; actionBtn.txt = this.innerHTML; $('.list_channel').slideToggle('fast');// $('.list_program_wrap').attr('class', 'list_program_wrap ch'+channel); return false;}); //]]></script>
이부분은 위에 snoopy 적용소스인데요.
Copy
<meta charset="utf-8"><?phpdefine('_INDEX_', true);include_once('./_common.php');if(isset($_GET['schedule'])){ include "lib/Snoopy.class.php"; $snoopy = new Snoopy; $snoopy->fetch("주소"); $table = "schedule"; $title=explode("<ul class=\"list_program\">",$snoopy->results); $title=explode("</ul>",$title[1]); echo $title[0]; $txt = $snoopy->results; $all_data=0; //불러온 테이터 갯수 초기화 $sec_data=0; //DB에 입력한 데이터 갯수 초기화 $wrnum=sql_fetch_array(sql_query("SELECT * FROM `g5_write_".$table."` order by `wr_num`")); if($wrnum['wr_num']==""){ $wrnum['wr_num']= -1; }else{ $wrnum['wr_num']=$wrnum['wr_num']+1; } /* $wrid=sql_fetch_array(sql_query("SELECT * FROM `g5_write_".$table."` order by `wr_id`")); if($wrid['wr_id']==""){ $wrid['wr_id']= 1; } */ foreach($xml as $item) { $all_data=$all_data+1; $chklink_sql="SELECT * FROM `g5_write_".$table."` WHERE `wr_link1`='".$item->link."'"; //이미 불러왔었던 포스팅 인지 확인 -질의문 $chk_q=sql_query($chklink_sql); //이미 불러왔었던 포스팅 인지 확인 -질의문 쿼리 if($chk_q->num_rows<1){ //검색결과 합이 1건 이하일때만 db에 입력 $trans = array("'" => "\""); //내용중 기호 ' 가 있으면 " 로 변환 시킴 변환하지 한다고 정의 . $contt = strtr($item->description, $trans); //내용중 기호 ' 가 있으면 " 로 변환 시킴. $str_date = $item->pubDate; // 날자 포맷 할거임 $date = date("Y-m-d H:t:s", strtotime( $str_date ) ); //Wed, 30 Sep 2015 11:48:17 +0900 => 1900-01-01 12:00:00 이런식으로 $sql="INSERT INTO `g5_write_".$table."` ( `wr_num` , `wr_option` , `wr_name` , `wr_subject` , `wr_content` , `wr_link1` , `wr_hit` , `wr_datetime` ) VALUES ('".$wrnum['wr_num']."','html1','".$item->author."','".$item->title."', '".$contt."', '".$item->link."','".RAND(1000,4000)."', '".$date."' )"; if(sql_query($sql)){ $wr_id = sql_insert_id(); sql_query("update `g5_write_".$table."` set wr_parent = '".$wr_id."' ,wr_num = '".-$wr_id."' where wr_id = '".$wr_id."' "); //wr_parent update sql_query("insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '".$table."', '".$wr_id."', '".$wr_id."', '".G5_TIME_YMDHIS."', '".$item->author."' ) "); //new sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '".$table."' "); //write_count ++ $sec_data=$sec_data+1; $wrnum['wr_num'] = $wrnum['wr_num']-1 ; /*$wrid['wr_id'] = $wrid['wr_id']+1 ;*/ }; } } echo $msg = "총 불러온 포스팅 [".$all_data."] 건 중 DB에 [".$sec_data."] 건 입력 하였습니다. "; echo "<br>"; echo " <a href='".G5_BBS_URL."/board.php?bo_table=".$table."'>게시판으로 가기</a>";}else{ echo "<a href='?rss=get'>포스팅 가져오기</a>";} ?>
어떻게 해야될까요?
답변 1개 / 댓글 1개
채택된 답변
+20 포인트
9년 전
그냥 파싱함수를 만드시는게 어떨까합니다
explode str_replace등 몇가지 기본함수루 만들어서
php로 sort는 쉽지만 페이징된파일을 또 가져올경우
의미가없으니
일단 db에 저장해서 (재)를 제외한 데이타를 지워버리는
방식이면 무난히 저장이가능할겁니다
제경우는 그렇게 했습니다
explode str_replace등 몇가지 기본함수루 만들어서
php로 sort는 쉽지만 페이징된파일을 또 가져올경우
의미가없으니
일단 db에 저장해서 (재)를 제외한 데이타를 지워버리는
방식이면 무난히 저장이가능할겁니다
제경우는 그렇게 했습니다
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.