采集练习(十) php 获得电视节目预告---数据来自搜视网
前几天逛湖南卫视,偶然间发现它的网站上也有节目预告,一看源码,居然是来自搜视网的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.xml 发现 tv_24 的 24 是 湖南卫视的id ;
ch_46的 46 是湖南卫视的 tvid ,而W6 则是湖南卫视 周六的 节目预告
根据电视台的 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);
采集练习(十) php 获得电视节目预告---数据来自搜视网的更多相关文章
- 采集练习(十一) php 获得电视节目预告---数据来自电视猫
昨天写了个采集搜视网的电视节目预告,刚好今天有心情,想采下其他网站提供的节目预告,发现 电视猫wap版 的提供的节目预告也蛮好采(需要正则)....感谢移动互联网! 电视猫的 wap版地址是 htt ...
- 使用GNU/Linux播放电视节目
目前,生活中很多事情都可以在电脑前完成,读书.写程序.听音乐.看视频等.如果也可以在电脑上收看有线电视节目的话,那就更好了.为此,我购买了圆刚视频采集卡AverMedia C725B.如下图所示. 官 ...
- HDU_2037——最多电视节目问题
Problem Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多 ...
- Ajax-08 跨域获取最新电视节目清单实例
目标一 请求江西网络广播电视台电视节目 URL:http://www.jxntv.cn/data/jmd-jxtv2.html 分析 1.从Http头信息分析得知,器服务端未返回响应头Access-C ...
- 安卓TV开发(十) 智能电视开发之在线视频直播
转载注明出处:http://blog.csdn.net/sk719887916/article/details/46582987 从<安卓TV开发(八) 移动智能终端多媒体之在线加载网页视频源& ...
- 采集练习(十二) python 采集之 xbmc 酷狗电台插件
前段时间买了个树莓派才知道有xbmc这么强大的影音软件(后来我逐渐在 电脑.手机和机顶盒上安装xbmc),在树莓派上安装xbmc后树莓派就成为了机顶盒,后面在hdpfans论坛发现了jackyspy ...
- 九度教程第22题——今年暑假不AC(看尽量多的电视节目)
#define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <algorithm> using namespace ...
- 使用PHP的CURL模拟POST采集开了viewstate的asp.net网页数据
用.NET做的网站如果做成POST提交方式,且开了viewstate的话,采集起来有点小繁琐,在此跟大家分享一下做法. 采的难点是必須先取得表單裏面的viewstate和datavalidtion兩個 ...
- JavaWeb学习总结(十)--JDBC之MySQL大数据
一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 但是,在mysql ...
随机推荐
- jquery dataTable 获取某行数据
DataTable API table.row(rowSelector [,modifier]) 注table是dataTable的对象 该方法有两个默认参数 第一个是选择器 第二个是可选的 请注意, ...
- mysqldump实践
mysqldump mysqldump---逻辑备份,热备 单线程,适合数据量小的库 mysql官方自带的命令行工具 #全库 )mysqldump -uroot -p123456 --sock ...
- Mac测试模拟慢网速
先普及一下Kb,KB,Kbps,Mb,Mbps等一些列概念 1Byte = 8bit 1KB (Kilobyte 千字节)=1024Byte 1MB (Megabyte,兆字节,简称“兆”)=1024 ...
- 苹果开发者:Siri未开放API 有些让人失望
北京时间6月12日消息,据国外媒体报道,苹果公司在WWDC大会上展示了新版iOS和OS X系统,但由于未开放Siri API,一些苹果开发者还是有些失望. Siri API可以让开发者在自己的应用中整 ...
- Command terminated by signal 11
Command terminated by signal 11可能的情况之中的一个是数组越界.你在訪问不被同意的内存空间.
- AAuto如何设置字体大小
在代码视图中(按钮呈现的是设计视图,你再按一下就切换成代码视图了)可以设置缩放比率,右下角也可以设置字体大小 如果你的"设计视图"是灰色不可点击,那是因为你的代码根本没有按钮, ...
- 调用聚合数据新闻头条API
基于聚合数据新闻头条接口 支持阅读新闻类型包括: 各类社会.国内.国际.体育.娱乐.科技等资讯,更新周期5-30分钟. 新闻内容类型的多选,支持皮肤功能. 使用前需要有聚合数据账号,并实名制后通过 新 ...
- Android开发之短信验证码示例
在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...
- webstrom 代码工具(转http://www.cnblogs.com/tangdanni11/p/5149063.html)
Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...
- JS图片预加载插件
在开发H5项目中有时候会遇到要加载大量图片的情况,利用预加载技术可以提高用户浏览时的体验. 1)概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片.预加载:提前加载 ...