2014-10-18 3 views
1

В настоящее время я пытаюсь использовать xpath для анализа html-страницы с веб-сайта.Использование Xpath для разбора html с веб-сайта

мне нужно, чтобы получить результат в формате:

Дата

Время программы: Название программы

Например:

ОСТ 18

1.00AM: Ye Hai Mohabbatein

Для этого используйте этот код. Но он работает 2 раза.

<?php 

$dat="Oct 18"; 
$ch = curl_init('http://www.starplus.in/schedule.aspx'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec($ch); 
$dom = new DOMDocument; 
libxml_use_internal_errors(true); 
$dom->loadHTML($page); 
libxml_clear_errors(); 
$xpath = new DOMXPath($dom); 
$n=0; 
$shows = array(); 
$tables1 = $xpath->query("//td[@class='bdr_R_dot']"); 
$tables2 = $xpath->query("//div[@class='sech_div_bg']/table"); 
foreach ($tables1 as $table1) { 
    $date = $xpath->query('./span[2]', $table1)->item(0)->nodeValue; 
    if($date==$dat){ 
     echo "<h1>$date</h1> <br>"; 
     foreach ($tables2 as $table2) { 
      $time_slot = $xpath->query('./tr[1]/td/span', $table2)->item(0)->nodeValue; 
      $show_name = $xpath->query('./tr[3]/td/span', $table2)->item(0)->nodeValue; 
      $shows[] = array('time_slot' => $time_slot, 'show_name' => $show_name);  
      echo "$time_slot - $show_name <br/>"; 
     } 
    } 
} 

?> 

Я сделал так много вещей, но мой код выполняется 2 раза, и все данные печатаются два раза. Я буду благодарен, если кто-нибудь поможет мне в этом вопросе.

+0

"Но он работает в 2 раза." можете ли вы прояснить это? – Gordon

+0

Выходной сигнал печатается между временным интервалом 1.00 AM до 12.30 AM для дважды. – JavDev

+0

Вы можете показать фрагмент XML? – Gordon

ответ

1

Да, вы можете использовать эту дату, чтобы получить показания за этот день. Вы можете использовать это как иглу для этой таблицы строк.

Первая цель, из которой она упадет, а затем получить эти строки. Пример:

$dat = "Oct 18"; 
$ch = curl_init('http://www.starplus.in/schedule.aspx'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec($ch); 
$dom = new DOMDocument; 
libxml_use_internal_errors(true); 
$dom->loadHTML($page); 
libxml_clear_errors(); 
$xpath = new DOMXPath($dom); 

$shows = array(); 
$node_list = $xpath->query(" 
    //td[@class='bdr_R_dot']/span[text() = '$dat'] 
    /parent::td/following-sibling::td 
    /table/tr/td[3]/div/ul/li 
"); 

echo $dat . '<br/><br/>'; 
foreach ($node_list as $el) { 
    $time_slot = $xpath->query('./div/table/tr[1]/td/span', $el)->item(0)->nodeValue; 
    $show_name = $xpath->query('./div/table/tr[3]/td/span', $el)->item(0)->nodeValue; 

    echo "$time_slot : $show_name <br/>"; 
} 

Sample Output

+0

Спасибо, Призрак мне очень помог. – JavDev

+0

@Coder уверен, человек не проблема. рад это помогло – Ghost

Смежные вопросы