採集練習(十)phpテレビ番組の予告---データは検索網から

3091 ワード

先日湖南衛星テレビをぶらぶらしていたら、偶然サイトにも番組の予告があったので、ソースコードを見ると、意外にも検索網からのxmlだったので、データを手に入れたいと思っていました(ページ直接ajaxロードはドメイン間の問題があると思います)
この間も別の方法で番組の予告を得た(採集練習(七)phpテレビ番組予告).
点开金鷹網ナビゲーションの上でドラマのマウスを探し当ててドラマに移動して中の番組表をクリックします実はこのリンクのhttp://hunantv.tvsou.com/データはネットを探しますから
ページの上で湖南衛星テレビをクリックして既存の2つのajax要求を出します
XHR finished loading: http://hunantv.tvsou.com/pst/tv_24/ch_46/W6.xml中は湖南衛星テレビの土曜日の番組予告です.
XHR finished loading: http://hunantv.tvsou.com/xml/ws.xml中は地方衛星テレビのxmlリスト分析を通してhttp://hunantv.tvsou.com/xml/ws.xmltv_が見つかりました24の24は湖南衛星テレビのidです.
ch_46の46は湖南衛星テレビのtvidで、W 6は湖南衛星テレビの土曜日の番組の予告です
テレビ局のxmlによって対応する番組の予告を得ることができます
残りのテレビ局の番組の予告も似ている.
問題:対応するテレビ局のidはxmlノードの属性上、以前は直接DOMDocumentクラスで読み込まれていたが、今回はsimplexmlクラスで処理しようと試みた.
次は中央テレビをテストするコードです.
<?php
/**
 * Created by JetBrains PhpStorm.
 * User: keygle
 * Date: 13-8-2
 * Time:   9:55
 * From: www.cnblogs.com/keygle
 */

/**
 * [getXml   xml]
 * @param  [type] $url [xml url]
 * @return [type]      [description]
 */
function getXml($url){
	$xmlStr = @file_get_contents($url);
	$xmlObj = @simplexml_load_string($xmlStr);
	return $xmlObj;
}

/**
 * [generateTvArray         ]
 * @param  [type] $tvUrl [xml   ]
 * @return [type] $datas    [      ]
 */
function generateTvArray($tvUrl){
	$tvObject = getXml($tvUrl);	
	$datas = array();
	//  Tv  
	$tvNode = $tvObject->Tv;
	//     
	for($i=0;$i<$tvNode->count();$i++){
		//           
		foreach ($tvNode[$i]->attributes() as $k=>$v){
			$datas[$i][$k] = (string)$v; //sim      string 
			$channelNode = $tvNode[$i]->Channel;
			for($n=0;$n<$channelNode->count();$n++){
				$datas[$i]['channel'][$n]['name'] = strval($channelNode[$n]);
				foreach ($channelNode[$n]->attributes() as $key => $value) {
					$datas[$i]['channel'][$n][$key] = strval($value);
				}
			}
		}
	}
	return $datas;
}
/**
 * [getPlayItems       ]
 * @param  [type] $playItemsUrl [xml   ]
 * @return [type]               [array]
 */
function getPlayItems($playItemsUrl){
	$playItemsObject = getXml($playItemsUrl); 
	return json_decode(json_encode($playItemsObject),true); //  simplexml       
}
//          
$tvUrl = "http://hunantv.tvsou.com/xml/ys.xml"; 
$tvListArray = generateTvArray($tvUrl);
print_r($tvListArray);
//   CCTV1        
$playItemsUrl = "http://hunantv.tvsou.com/pst/tv_1/ch_1/W6.xml";
$playItemsArray = getPlayItems($playItemsUrl);
print_r($playItemsArray);