웹스크래핑 중 정규표현식 관련 질문입니다^^; > 자유게시판

자유게시판

웹스크래핑 중 정규표현식 관련 질문입니다^^; 정보

웹스크래핑 중 정규표현식 관련 질문입니다^^;

본문

다음 스포츠 웹사이트를 저희 사이트에 웹스크래핑(스크린 스크래핑)

하기위해서 정규표현식을 이용하여 값을 추출해오는데 몇일동안 못 풀고있어서

이렇게 질문드립니다 ㅜ_ㅜ;;

 
아시는분께서는 조언 또는 해답 남겨주시면 감사하겠습니다^^;
 

====================================================

다음 스포츠 코드 부분 (이 소스 중에서 값을 추출하게 됩니다.)

<div class="main_area result_record">
<div class="navigation"><a href="http://sports.media.daum.net/">스포츠홈</a></div>



<div class="result_calendar">
<div id="calendar"></div>
<script type="text/javascript">//<![CDATA[
var mcalendar = new MCalendar( $('calendar'), {
year:'2011',
month:'10',
day : '26',
isMarkGameDay : true,
markGameDayUrl : 'http://sports.media.daum.net/planus_proxy/planus/do/baseball/kbo/json/game_day.js',
onChange:function(){
var date = this.getYMD().split('.');
location.href = 'sbrd_main.daum?game_date='+date[0]+date[1]+date[2];
// alert(this.dateArray);
return;
}
})
//]]></script>
</div>

<div class="result_brd result_score_brd">
<a href="rec_main.daum?game_id=67854347" class="record_view">더보기</a>
<table class="score">
<tr>
<td class="t_logo1"><a href="../record/tinf_main.daum?team_id=384"><img src="http://i1.daumcdn.net/img-section/sports09/logo/team/kbo/SK_7063.gif" width="70" height="63" alt="" /></a></td>
<td class="t1">
<p>
<strong><a href="../record/tinf_main.daum?team_id=384">SK</a></strong><br />
</p>
</td>



<td class="s1"><div>
<span class="score_n"><script type="text/javascript">/*<![CDATA[*/document.write(createImgScore('1'));/*]]>*/</script></span>
</div></td>
<td class="vs">
<p class="state">종료 </p>
</td>
<td class="s2"><div>
<span class="score_n"><script type="text/javascript">/*<![CDATA[*/document.write(createImgScore('2'));/*]]>*/</script></span>
</div></td>





<td class="t2">
<p>
<strong><a href="../record/tinf_main.daum?team_id=383">삼성</a></strong><br />
</p>
</td>
<td class="t_logo2"><a href="../record/tinf_main.daum?team_id=383"><img src="http://i1.daumcdn.net/img-section/sports09/logo/team/kbo/SS_7063.gif" width="70" height="63" alt="" /></a></td>
</tr>
</table>

<div class="info">
<p>한국시리즈 2차전</p>
<p>대구시민운동장 야구장<em>18:00</em></p>
<p class="relation">
<span><a href="game_relation.daum?t1=383&t2=384">양팀 전적</a></span>
<span class="bar"><a href="game_relation.daum?t1=383">삼성 </a></span>
<span class="bar"><a href="game_relation.daum?t1=384">SK </a></span>
</p>
</div>

<table class="score_detail">
<col width="85" />
<col width="29" />
<col width="30" />
<col width="29" />
<col width="29" />
<col width="30" />
<col width="29" />
<col width="28" />
<col width="29" />
<col width="28" />
<col width="34" />
<col width="32" />
<col width="36" />
<col width="30" />
<col width="32" />
<col width="30" />
<col width="30" />
<col width="16" />
<tr>
<th></th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
<th>11</th>
<th>12</th>
<th><strong>R</strong></th>
<th><strong>H</strong></th>
<th><strong>E</strong></th>
<th><strong>B</strong></th>
<th></th>
</tr>
<tr>
<td colspan="18" class="dummy"></td>
</tr>
<tr class="kbo">
<td class="kbo_team">SK</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td><em>-</em></td>
<td><em>-</em></td>
<td><em>-</em></td>
<td><strong>1</strong></td>
<td>7</td>
<td>1</td>
<td>3</td>
<td></td>
</tr>
<tr class="kbo">
<td class="kbo_team">삼성</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td><em>-</em></td>
<td><em>-</em></td>
<td><em>-</em></td>
<td><em>-</em></td>
<td><strong>2</strong></td>
<td>6</td>
<td>1</td>
<td>5</td>
<td></td>
</tr>
</table>
</div>





<div class="errorcall">
<a href="http://cs.daum.net/mail/form/63.html?cat=10234" target="_blank" class="call" title="신고하기"></a>
<a href="#" onclick="window.scrollTo(0,0); return false;" class="top" title="맨위로"></a>
</div>
<script type="text/javascript">//<![CDATA[
recordTableNodata();
//]]>
</script> </div><!-- //main_area -->


 ====================================================


 

 

 

 



====================================================
 

제가 추출 성공한 소스

preg_match_all("/<td[^>]*class=[\"']t_logo1[\"']?[^>]*>(.*?)<\/td>/i",$txt,$match1);

$match1[1][0];
 

/* 변수 설명

$txt 는 추출대상인 다음 전체소스
$match1 은 담을 변수명

*/


성공한 소스 결과값

<td class="t_logo1"><a href="../record/tinf_main.daum?team_id=384"><img src="http://i1.daumcdn.net/img-section/sports09/logo/team/kbo/SK_7063.gif" width="70" height="63" alt="" /></a></td>


====================================================


위와 같은방식으로 테이블 부분 클래스 값을 이용하여 score_detail 테이블 전체 소스를 추출하려고 합니다
(td에서 table로 변경, 클래스 네임만 변경 했음)

preg_match_all("/<table[^>]*class=[\"']score_detail[\"']?[^>]*>(.*?)<\/table>/i",$txt,$match2);

$match2[1][0];


====================================================


table 내의 값을 모두 추출하려고 할때는 작동이 안됩니다.

두개의 차이점을 보니

위의 td의 경우엔 줄바꿈 공백 등이 없기에 작동이 되었고

아래의 table의 경우엔 줄바꿈 공백 탭 등이 있다는 것입니다.

/<table[^>]*class=[\"']score_detail[\"']?[^>]*>(.*?)<\/table>/i

그래서 이 부분 중 (.*?) <- 여기가 줄바꿈 공백 등이 포함되게 수정되어야 할 것 같은데 잘 안되네요 ㅜ.ㅜ;


답변 기다리겠습니다^^;
추천
0

댓글 4개

전체 199,687 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT