[微信查询接口] 六、电影排行榜

[复制链接]
发表于 2014-2-2 13:50:56 | 显示全部楼层 |阅读模式
微信电影排行榜# Q6 V9 G( p, @0 A/ W
在网上找了很久都没找到一个电影api,豆瓣电影api可以,可是要认证地址,麻烦,于是就找了一个网站,实时抓取数据了,由于我抓取的数据没有直接保存进数据库,so,过个过程会有点慢.先上效果图7 {& b% L$ b# Z5 @' r; ~
6 P$ z* \4 @7 y& _# w) F
$ X, H% m  `  o5 ?' u$ Q7 b( i
1、入口界面
* q# b/ [( r4 F" e4 m, h5 c' t
$ H+ B2 g  U4 D: y) o% q9 z; u. S1 F- c: R' q9 e
2、排行榜页面+ j$ g7 e( P! M& }& f
# s, @# \5 B" A5 ]( _! Q7 r$ o

$ F4 E7 m6 Z7 Z3、今日排行(输入3.1)
9 r2 U7 {" ^; h' N3 B4 j; j# P: ^) \% \5 k4 i

0 K6 g  w  y; r0 j4、北美票房(3.2)
4 T; R( v, T1 {3 Y, }7 p0 i# @# V% w
: T# E$ ~: P9 S( |/ Q- M
5、香港票房 3.3' W) O% i- Q' |: X, X
* t" g) b" ^- S; T
' i4 H# X6 E9 P, I# ?& m
6、电影收视榜 3.4
- x4 l( [6 z& ?0 U' [
" U- Q' r/ @- U1 ?; B5 d8 P" q1 F7 s' }
7、电视收视榜 3.5
5 m; D( S0 {3 O4 h) H( Y: C3 Q! y5 c; g
7 e! Q) s1 @9 M/ N
数据抓取来源:http://data.entgroup.cn ,使用到了simple_html_dom html解析库,代码如下
  • //----------------------------------------------------------------电影排行榜开始------------
  •     //抓取http://data.entgroup.cn/电影数据
  •     private function _movie_comm($url,$param="",$title=""){
  •         //设置头内容
  •         $length=empty($param)?0:19;//好吧,我这里写死了长度..
  •         $header=array(
  •             "Accept-Encoding:gzip,deflate,sdch",
  •             "Accept-Language:zh-CN,zh;q=0.8",
  •             "Content-Lengthlength",
  •             "Content-Type:application/json; charset=UTF-8",
  •             "Host:data.entgroup.cn",
  •         );
  •         $reArr=http($url,$param,"OST",$header);
  •         Log::write("url ->$url , param =$param ,head =>".print_r($header,true));
  •         $data=json_decode($reArr);
  •         if(empty($data)){
  •             return array("未找到数据,请检查网络或稍后再试试看。","text");
  •         }
  •         $html=$data->d;
  •         $preg2='/<a .*?>(.*?)<\/a>/is';//(?!<img)//取出所有信息(包括第一张图片)
  •         preg_match_all($preg2,$html,$match);
  •         $data=$match[1];
  •         $count=count($data);
  •         $datas=array();
  •         for($i=0;$i<$count;$i++){
  •             if($i>8){
  •                 break;
  •             }
  •             if($i==0){//第一张是图片
  •                 $datas[$i][]        =    $title;
  •                 $datas[$i][]        =    "";
  •                 $src_path=$data[$i];
  •                 $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/";//抓取图片
  •                 preg_match_all($pattern,$src_path,$image_match);
  •                 $datas[$i][]        =    $image_match[1][0];
  •                 $datas[$i][]        =    "";
  •             }else{
  •             
  •                 $datas[$i][]        =    "{$i}、".$data[$i];
  •                 $datas[$i][]        =    "";
  •                 $datas[$i][]        =    "";
  •                 $datas[$i][]        =    "";
  •             }
  •         }
  •         $datas[$count][]        =    "小助手:回复 ? 进入到主菜单。";
  •         $datas[$count][]        =    "";
  •         $datas[$count][]        =    "";
  •         $datas[$count][]        =    "";
  •         return array($datas,"news");
  •     }
  •     //今日票房
  •     public function get_today(){
  •         return $this->_movie_comm("http://data.entgroup.cn/BoxOffice/movieData/Movie.aspx/BindDayList","今日票房");
  •     }
  •     private function _get_week_id($find_id){
  •       import("@.ORG.simple_html_dom",null,".php");
  •       $html= file_get_html("http://data.entgroup.cn/boxoffice/oversea");
  •       $ele=$html->find("$find_id option",0);
  •       return $ele?$ele->value:null;
  •     }
  •     //北美票房
  •     public function get_na(){
  •         $weekId=$this->_get_week_id("#week2");
  •         $param="{ 'weekId': '$weekId'}";
  •         return $this->_movie_comm("http://data.entgroup.cn/BoxOffice/movieData/oversea.aspx/BindUSAList",$param,"北美票房");
  •     }
  •     //香港票房
  •     public function get_hk(){
  •         $weekId=$this->_get_week_id("#week1");
  •         $param="{ 'weekId': '$weekId'}";
  •         return $this->_movie_comm("http://data.entgroup.cn/BoxOffice/movieData/oversea.aspx/BindHongKongList",$param,"香港票房");
  •     }
  •     //电影收视,电视收视共同
  •     private function _send_movie_comm($url,$match,$title,$image){
  •         import("@.ORG.simple_html_dom",null,".php");
  •          $html= file_get_html($url);
  •         $ok_datas=$html->find($match);
  •         $datas=array();
  •         $i=0;
  •         foreach($ok_datas as $row){
  •             if($i>9){
  •                 break;
  •             }
  •             if($i==0){//第一张是图片
  •                 $datas[$i][]        =    $title;
  •                 $datas[$i][]        =    "";
  •                 $datas[$i][]        =    "http://www.aidemofang.com.img.800cdn.com/Public/home/images/$image";
  •                 $datas[$i][]        =    "";
  •             }else{
  •             
  •                 $datas[$i][]        =    "{$i}、".trim($row->plaintext);
  •                 $datas[$i][]        =    "";
  •                 $datas[$i][]        =    "";
  •                 $datas[$i][]        =    "";
  •             }
  •             $i++;
  •         }
  •         $datas[$i][]        =    "小助手:回复 ? 进入到主菜单。";
  •         $datas[$i][]        =    "";
  •         $datas[$i][]        =    "";
  •         $datas[$i][]        =    "";
  •    
  •         return array($datas,"news");
  •     }
  •     //电影收视榜
  •     public function get_movie(){
  •         $url="http://data.entgroup.cn/ratings/film";
  •         $match=".person .trs a";//查找指定的所有a标签数据
  •         return $this->_send_movie_comm($url,$match,"电影收视榜","movie.jpg");
  •     }
  •     //电视收视榜
  •     public function get_tv(){
  •         $url="http://data.entgroup.cn/ratings/tv";
  •         $match=".person .trs a";//查找指定的所有a标签数据
  •         return $this->_send_movie_comm($url,$match,"电视收视榜","tv.jpg");        
  •     }
  • //----------------------------------------------------------------电影排行榜结束------------2 G; D% [0 e( C, t
6 P- C) B( U, _5 \




上一篇:五、天气,在线计算、域名查询、ip归属、手机号
下一篇:七、公交查询,百科,提问,词典,诗词
回复

使用道具 举报

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表