昨天写了个采集搜视网的电视节目预告,刚好今天有心情,想采下其他网站提供的节目预告,发现  电视猫wap版 的提供的节目预告也蛮好采(需要正则)....感谢移动互联网!

电视猫的 wap版地址是 http://wap.tvmao.com/  点击相应的电视台 进去就能看到 相应的 节目预告。

如:http://wap.tvmao.com/cctv.jsp  里的就是 央视的 相应频道列表  点击 相应的 频道 就可以看到  该频道的 的节目预告;

http://wap.tvmao.com/program.jsp?p=CCTV&c=CCTV1&w=6  就是 CCTV-1 周六 的节目预告 。

分析 页面html 得知   /program.jsp?p=CCTV&c=CCTV1 来自  http://wap.tvmao.com/cctv.jsp 页面的频道列表里  而 w=6 表示 周六

下面是采集央视的测试代码:

<?php
/**
* Created by JetBrains PhpStorm.
* User: keygle
* Date: 13-8-3
* Time: 下午2:04
* From www.cnblogs.com/keygle
*/ /**
* [curl 带重试次数]
* @param [type] $url [访问的url]
* @param [type] $post [$POST参数]
* @param integer $retries [curl重试次数]
* @return [type] [description]
*/
function curlGetHtml($url, $post = null, $retries = 3){
$ch = curl_init();
if(is_resource($ch) === true){
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, "http://wap.tvmao.com/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36");
if(isset($post) === true){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (is_array($post) === true) ? http_build_query($post, "", "&"): $post);
}
$result = false;
while(($result === false) && (--$retries > 0)){
$result = curl_exec($ch);
}
curl_close($ch);
}
return $result;
} /**
* [getTvUrl 获得电视台链接数组]
* @param [type] $tvListHtml [页面html ]
* @return [type] [description]
*/
function getTvUrl($tvListHtml){
$tvListArray = array();
//正则匹配 url 和 电视台名
preg_match_all('#<a href="/([^"]+)">(.*?)</a><br/>#i', $tvListHtml, $matches);
foreach ($matches[1] as $key => $value) {
$tvListArray[$key]['url'] ="http://wap.tvmao.com/".html_entity_decode($value); //html 实体转换
$tvListArray[$key]['name'] = $matches[2][$key];
}
return $tvListArray;
} /**
* [getPlayItems 获得电视节目预告]
* @param [type] $tvUrl [description]
* @return [type] [description]
*/
function getPlayItems($tvUrl){
$playItems = array();
$itemHtml = curlGetHtml($tvUrl);
preg_match_all("#r/>([^<]+)?<b#i", $itemHtml, $matches);
array_shift($matches[1]); //去掉数组的第一个
$playItems = $matches[1];
return $playItems;
} //获得央视 的所有频道
$url = "http://wap.tvmao.com/cctv.jsp";
$tvListHtml = curlGetHtml($url);
$tvListArray = getTvUrl($tvListHtml);
print_r($tvListArray);
// 获得cctv1的 周六 节目预告
$tvUrl = "http://wap.tvmao.com/program.jsp?p=CCTV&c=CCTV1&w=6";
$playItems = getPlayItems($tvUrl);
print_r($playItems);

采集练习(十一) php 获得电视节目预告---数据来自电视猫的更多相关文章

  1. 采集练习(十) php 获得电视节目预告---数据来自搜视网

    前几天逛湖南卫视,偶然间发现它的网站上也有节目预告,一看源码,居然是来自搜视网的xml,于是就想获得它的数据(页面直接ajax加载估计会有跨域问题) 前阵子也写过另一个方法获得 节目预告(采集练习(七 ...

  2. 使用GNU/Linux播放电视节目

    目前,生活中很多事情都可以在电脑前完成,读书.写程序.听音乐.看视频等.如果也可以在电脑上收看有线电视节目的话,那就更好了.为此,我购买了圆刚视频采集卡AverMedia C725B.如下图所示. 官 ...

  3. HDU_2037——最多电视节目问题

    Problem Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多 ...

  4. Ajax-08 跨域获取最新电视节目清单实例

    目标一 请求江西网络广播电视台电视节目 URL:http://www.jxntv.cn/data/jmd-jxtv2.html 分析 1.从Http头信息分析得知,器服务端未返回响应头Access-C ...

  5. 二十一、contextMap中放的常用数据

    二十一.contextMap中放的常用数据 request:请求范围的数据.即ServletRequest中的那个Map parameters:请求参数的数据.即request.getParamete ...

  6. 九度教程第22题——今年暑假不AC(看尽量多的电视节目)

    #define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <algorithm> using namespace ...

  7. 使用PHP的CURL模拟POST采集开了viewstate的asp.net网页数据

    用.NET做的网站如果做成POST提交方式,且开了viewstate的话,采集起来有点小繁琐,在此跟大家分享一下做法. 采的难点是必須先取得表單裏面的viewstate和datavalidtion兩個 ...

  8. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 3 使用前提 3 使用方法 ...

  9. 11.采集手机端app企查查上司公司数据(未成功)

    ---恢复内容开始--- 采集企查查手机端app数据: 1.首先手机端安装app并usb连接电脑端,fiddler监控手机请求数据对数据进行分析抓取. 手机端界面与fiddler界面参照: 2.对获取 ...

随机推荐

  1. mysql之select,insert,delete,update

    写在前面 上篇文章学习了创建数据库和数据表,这篇文章将学习对数据表的增删改查操作. 系列文章 mysql之创建数据库,创建数据表 一个例子 上篇文章中,创建了数据库和数据表,数据表中还没有数据,这里我 ...

  2. linux 学习解决归档管理器打开rar和zip中文文件名乱码问题

    在ubunut下打开windows下压缩的rar文件和zip压缩文件出现中文文件名乱码的问题真的很头疼.文件名乱码其实也没有什么关系是不?至少重命名再改回来或者是使用英文命名都可以克服.不巧的是,如此 ...

  3. (转)python装饰器二

    Python装饰器进阶之二 保存被装饰方法的元数据 什么是方法的元数据 举个栗子 def hello(): print('Hello, World.') print(dir(hello)) 结果如下: ...

  4. iOS开发--从TQRichTextViewDemo中学会分析project

    下载地址: http://code4app.com/ios/TQRichTextView/5244fe9c6803fa0862000000 1.首先找到AppDelegate类.不管一个project ...

  5. LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)

    翻译 反转一个单链表. 原文 Reverse a singly linked list. 分析 我在草纸上以1,2,3,4为例.将这个链表的转换过程先用描绘了出来(当然了,自己画的肯定不如博客上面精致 ...

  6. js函数的Json写法

    https://zhidao.baidu.com/question/83401454.html

  7. matlab-1

    1.size():获取矩阵的行数和列数 (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数.(2)[r,c]=size(A),当 ...

  8. uva 1493 - Draw a Mess(并查集)

    题目链接:uva 1493 - Draw a Mess 题目大意:给定一个矩形范围,有四种上色方式,后面上色回将前面的颜色覆盖,最后问9种颜色各占多少的区域. 解题思路:用并查集维护每一个位置相应下一 ...

  9. 存储过程清理N天前数据

    CREATE OR REPLACE PROCEDURE APICALL_LOG_INTERFACE_CLEAN ( CLEANDAY IN Number --天数 ) AS v_cleanDay nu ...

  10. centOS 7中上网以及网卡的一些设置

    在VMWare中安装LinuxOS是个非经常见的事情. 可是,关于虚拟机的上网问题.想在这里总结一下,里面还有不懂的问题.希望能够得到前辈的解惑. 一.VMWare网卡的设置的三种选项: Bridge ...