2013-10-15 1 views
0

간단하지만 충분히 화면이 깨끗하지 않은 것 같습니다. 내가해야하는 것은 그래서 같은 구조로 일정 테이블이 있습니다 (예를 목적으로) 원격 사이트 http://www.remotesite.com입니다 :PHP로 2 열 테이블을 스크랩하는 화면

테이블이 있다는 것 게임의 수에 따라 항목의 동적 범위로 채워집니다
<table> 
    <tr> 
    <td class="team"> 
     Team 1 
    </td> 
    <td class="team"> 
     Team 2 
    </td> 
    </tr> 
</table> 

날 팀 1 대 팀 2 등

나는 테이블에 나열된 모든 팀의 목록을 얻기 위해 내 scrapper를 구축했으며 성공적으로 작동합니다. ?

<?php 
// Load Simple DOM 
    include_once("simple_html_dom.php"); 

// Scrape the Schedule 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument(); 
    $html = file_get_html("http://www.remotesite.com/schedule.htm"); 

    // Load HTML 
     $dom->loadHTML($html); 
     $xpath = new DOMXPath($dom); 

    // Get all the Teams 
     $my_xpath_query = "//table//td[contains(@class, 'team')]"; 
     $result_rows = $xpath->query($my_xpath_query); 

>

그리고 나는이 코드를 가지고있는 스크랩을 반향 : 그러나

<?php 
    // Display the schedule 
     foreach ($result_rows as $result_object){ 
      echo $result_object->nodeValue; 
     } 
?> 

을, 어떤이가 수행하는 것은 팀과 같이 밖으로 반향된다

여기 코드는
Team1Team2Team3Team4Team5Team6 etc, etc. 

올바른 순서로 서로 대결하는 팀의 쌍을 얻고 있지만 내가해야 할 일은 나는 그것을 가져 오는 것과 같은 방식으로 테이블에 문장을 반복합니다.

도움을 주시면 미리 감사드립니다. 내 질문에 대한 답을 바탕으로

+0

무엇 _ "나는 기본적으로 수행되어 필요한 테이블을 내가 가져 오는거야 같은 방법을 에코 무엇 그 뜻은? – Madbreaks

+0

나는 테이블을 전부 가져 와서 스크립트에서 화면에 표시하고 싶습니다. – rws907

+0

왜'// table // td ... '를 검색해야합니까? 왜 테이블 자체에 대한 XPath 쿼리가 아닌가? – Madbreaks

답변

0

, 난 그냥 같은 일을 건의 할 것입니다 :

$rows = ''; 
$teams = array(); 

// Pull team names into array 
foreach ($result_rows as $result_object){ 
    $teams[] = $result_object->nodeValue; 
} 

// Extract two teams per table row 
while(count($teams)){ 
    $matchup = array_splice($teams, 0, 2); 
    $rows .= '<tr><td>'.implode('</td><td>', $matchup).'</td></tr>'; 
} 

// Write out the table 
echo "<table>$rows</table>'; 
+0

회신과 도움을 주셔서 감사합니다 지금까지 사람, 많은 감사하겠습니다. 귀하의 예를 실행할 때 "치명적인 오류 : 최대 실행 시간이 30 초를 초과했습니다" – rws907

+0

oops, typo. 위의 시도 (특히, array_splice에 고정 args) – Madbreaks

+0

그게 다행이다! – rws907