采集练习(十) 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 ...
随机推荐
- cocos3.7.1 mac 创建项目
cocos2d-x-3.7/tools/cocos2d-console/bin目录下,输入命令: ./cocos.py new HelloWorldDemo -p com.coco2dx.org -l ...
- django admin页面样式丢失问题
wamp 配置django admin页面样式丢失问题 第一种方法:在apache配置文件httpd.conf中加入如下代码:Alias /static "E:\Python27\Lib\s ...
- Xshell 初次应用
以前就想安装Xshell,今天终于弄好了,可以在windows下对Linux服务端进行管理. 关于SSH和Xshell的介绍见参考,Linux上安装的是ssh服务端,所以咱们如果希望通过远程访问的方式 ...
- 微信开发token验证失败
遇到token验证时: 1.首先检验是否是80端口或443端口,能否接收到微信的响应信息,如果使用域名,域名要备注,否则接收不到响应信息: 2.其次判断是否能正常echo $echoStr,之前不能有 ...
- HTTP错误状态码定位与解决
实践总结 本次基于对500错误定位为例,给大家讲解整个分析过程与解决方法. 1.本次实践为HTTP错误状态码定位提供一个高效.精确的定位方式,不仅仅局限于500错误. 2.针对500错误本身,可以基于 ...
- mongodb模拟生产环境的分片集群
分片是指数据拆分 将其分散在不同的机器上的过程,有时候也叫分区来表示这个概念.将数据分散到不同机器上 不需要功能强大的计算机就可以储存更多的数据,处理更大的负载. 几乎所有的数据库 ...
- linux暴力密码破解工具hydra安装与使用
说明:hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码.官网:http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco ...
- Odoo11 新功能 : 栏位隐藏
Odoo11增加了一个 新的 modifier-. 先上 前端框架代码 invisible / readonly / required 这几个 是经常在用的, column_invis ...
- TCP/IP详解 卷一(第二章 链路层)
在TCP/IP协议族中,链路层主要有三个目的: 1.为IP模块发送和接收IP数据报 2.为ARP模块发送ARP请求和接收ARP应答 3.为RARP请求和接收RARP应答 TCP/IP支持多种不同的链路 ...
- C#遍历指定路径下的目录
通过指定路径訪问路径下的文件.在C#的开发中主要利用了Directory类和DirectoryInfo类,简要介绍Directory类中的成员:命名空间 System.IO 命名空间 1.Create ...