zoukankan      html  css  js  c++  java
  • 用来获取豆瓣网上电影信息的简介

    <?php
    //搜索链接
    function search_link($moviename)
    {
            
            //构造url,其中max-results可根据需要更改
            $urlString = 'http://api.douban.com/movie/subjects?q='.$moviename.'&start-index=1&max-results=1&alt=json';
            //print_r($urlString);
            $urlString=mb_convert_encoding($urlString, "UTF-8", "GBK");//将Url转换为utf-8编码
            $r = new HttpRequest($urlString,HttpRequest::METH_GET);//请求
            $response = $r->send();
            $result = $r->getResponseBody();
            $obj = json_decode($result);//解析成json格式
        
            if($entry = @$obj->{'entry'}){
                    //搜索链接并存在数组中返回
                    for($i = 0;$i<sizeof($entry);$i++){
                            $link=$entry[$i]->{'link'}; 
                            for($j = 0;$j<sizeof($link);$j++){
                                  $arr = (array)$link[$j];
                                  $key = array_search("self",$arr);
                                  if($key){                                    //判断key是否存在
                                      $str = $arr["@href"].'?alt=json'; //构造返回链接的格式
                                      break;
                                  }    
                            }
                            $link_array[] = $str;
                    }
                    return $link_array;//返回链接
            } else
                    echo"Not Found!";
            
    }
    
    //查询链接并将各变量放入$GLOBAL 数组
    function get_info($urlString)
    {
            $r = new HttpRequest($urlString,HttpRequest::METH_GET);
            $response = $r->send();
            $result = $r->getResponseBody();
            
            //if..else.. 判断打开链接是否为空
            if ($obj = json_decode($result)){
                //将影片的信息放在全局数组中
                $title = $obj->{'title'};
                $author = $obj->{'author'};
                $summary = $obj->{'summary'};
                $ID=$obj->{'id'};
                $link = $obj->{'link'};  
                $gd = (array)$obj->{'gd:rating'};    
                $db_array = array();
                
                $db = $obj->{'db:attribute'};
                //将db:atribute中的值放进数组
                foreach ($db as $value){
                    $value_array = (array)($value);
    
                    $v = $value_array["@name"];
                    $k = $value_array["\$t"];
                    if (array_key_exists("@lang",$value_array)){
                        $lang=$value_array["@lang"];
                        $k=$k.'['.$lang.']';
                    }        
                    $db_array[$v][]=$k; 
                }
                //设定对应数组的键值
                @$db_array_key = array('【影片原名】','【别    名】','【导    演】','【编    剧】','【官方网站】','【IMDB链接】','【出品年代】',
                                   '【国    家】','【电影类型】','【上映日期】','【放映长度】','【集    数】','【语    言】','【演    员】');
                @$db_array_value = array($db_array["title"],$db_array["aka"],$db_array["director"],$db_array["writer"],$db_array["website"],
                                     $db_array["imdb"],$db_array["year"],$db_array["country"],$db_array["movie_type"],$db_array["pubdate"],
                                     $db_array["movie_duration"],$db_array["episodes"],$db_array["language"],$db_array["cast"]);
                @$db_array = array_combine($db_array_key,$db_array_value);
            }   else{
                    echo "Empty link!";
            }
            $info=array("title"=>$title,"author"=>$author,"summary"=>$summary,"ID"=>$ID,"link"=>$link,"gd"=>$gd,"db_array"=>$db_array);
            return $info;
    }
    //将影片信息写入文件        
    function write_info($fi,$info)            
    {  
                //fwrite($fi, "******");写入文件
                fwrite($fi, "【影片原名】");
                foreach ($info["title"] as $k=>$v)
                        fwrite($fi,"$v\r\n");
                fwrite($fi,"\r\n");     
                
                fwrite($fi,"【出 品 人】");
                  foreach ($info["author"] as $value)
                      foreach ($value as $key)
                        foreach ($key as $v) {
                          fwrite($fi,"$v\r\n");
                        }
                fwrite($fi,"\r\n");         
                
                //db:attribute
                foreach ($info["db_array"] as $key=>$value){
                    if(count($value)){
                            fwrite($fi,$key);
                            if($value==$info["db_array"]['【演    员】']){
                                foreach($value as $k=>$v)
                                    fwrite($fi,"$v\r\n            ");
                            }   else{
                                    foreach($value as $k=>$v)
                                        fwrite($fi,"$v  ");
                                    fwrite($fi,"\r\n");
                            }
                    }
                }
                fwrite($fi,"\r\n"); 
                
                //影片简介
                fwrite($fi, "【简    介】\r\n");
                foreach ($info["summary"] as $k=>$v){
                    fwrite($fi,"   $v \r\n");
                } 
                fwrite($fi,"\r\n");             
                
                //ID  
                fwrite($fi,"【I      D】");
                foreach ($info["ID"] as $k=>$v){
                    fwrite($fi,$v);
                }
                fwrite($fi,"\r\n"); 
                
                //链接                
                fwrite($fi,"【链    接】\r\n"); 
                foreach ($info["link"] as $value){   
                    foreach ($value as $k=>$v){    
                        fwrite($fi, "  $v  ");
                    }
                    fwrite($fi,"\r\n");
                }
                fwrite($fi,"\r\n"); 
                
                //评论  
                fwrite($fi,'【评    论】'); 
                fwrite($fi,$info["gd"]["@numRaters"]);
                fwrite($fi,"\r\n"); 
                fwrite($fi,'【最高】');  fwrite($fi,$info["gd"]["@max"]);
                fwrite($fi,"  【最低】");fwrite($fi,$info["gd"]["@min"]);
                fwrite($fi,'  【平均】');fwrite($fi, $info["gd"]["@average"]);
                fwrite($fi,"\r\n"); 
    }
    //在指定的文件夹中寻找电影并返回电影名
    function find_dir($dir)
    {
        if(is_dir($dir)){                              //判断所给路径名是否为目录
            if($fdir=opendir($dir)){                //打开目录
                while(false!==($file=readdir($fdir))){                //遍历目录中的文件
                    if ($file != "." && $file != "..") 
                        $files[]=$file;                    //将寻找到的文件放入数组并返回
                }
                closedir($fdir);
                print_r($file);
                return $files;
            }    
        }
    }
    //将生成的txt文件放在指定的目录下
    function write_to_dir($dir,$moviename)
    {    
        if (is_dir($dir)){                                                         //判断所给路径名是否为目录
            if($fdir=opendir($dir)){                                               //打开目录
                while(false!==($file=readdir($fdir))){                          //遍历目录中的文件    
                    if ($file != '.' && $file != '..') {  
                        $dirname=$dir.'\\'.$file;
                        if (is_dir($dirname)&&$file==$moviename) {                   //寻找指定的文件夹
                            $filename=$dirname.'\\'.$moviename.'.txt'; 
                            //if(!file_exists($filename)){                        
                                if($fi=fopen($filename,'w+')){                       //打开指定文件,若不存在,建立文件并返回
                                    closedir($fdir);
                                    return $fi;      
                                }else
                                    echo"Fail to Open file!";    
                            //}                                
                        } else
                                echo "Dir Not Exists!";                
                    }    
                }  
            } else {
                            echo 'Fail to Open!';    
                            return;
            }
        }   else {
                    echo 'Directory Not Exists!';
                    return;
        }
    }
    
    $dir = 'E:\film';
    if($movienames = @find_dir($dir)){                                //在指定目录中获得电影名,进行搜索
        foreach ($movienames as $key=>$moviename){
            if($link_info = search_link($moviename)){
            
                //搜索影片名
                if ($fi=write_to_dir($dir,$moviename)){                    //写入指定文件夹
                    fwrite($fi,"<Resources>\r\n");
                    fwrite($fi,'<MesageBody>');
                    fwrite($fi,"\r\n\r\n\r\n".'※※※※※※※※※※※※※※※※※※※※※ 影片信息 ※※※※※※※※※※※※※※※※※※※※※'."\r\n");
    
                    foreach ($link_info as $k){
                        $info=get_info($k);                                //获取链接信息
                        write_info($fi,$info);                            //在txt文件中写入信息
                        fwrite($fi,"*************************************************************************************************\r\n");
                    }
                    fclose($fi);//写入完成,关闭文件
                }
            } else
                echo "Empty!";
        }
    }   else 
            echo "Movies Not Exists!";
    ?>

    Fatal error: Class ‘HttpRequest’ not found

    有一行代码:

    $httpRequest = new HttpRequest($oauthRequest->http_url(), HttpRequest::METH_GET);

    没有 HttpRequest 这个类,是 php扩展问题

    wamp>php设置》php扩展》添加扩展 输入php_http.dll回车

  • 相关阅读:
    clientHeight、offsetHeight、scrollHeight详解
    JavaScript中常见的字符串操作函数及用法
    获取伪元素的属性和改变伪元素的属性
    HTML和CSS实现左侧固定宽度右侧内容可滚动
    gulp常用插件
    gulp入门详细教程
    Javascript 异步实现机制
    JavaScript:彻底理解同步、异步和事件循环(Event Loop)
    chrome调试,打完断点后关于JS的几个控制介绍
    js断点调试心得
  • 原文地址:https://www.cnblogs.com/guke/p/2772044.html
Copyright © 2011-2022 走看看