用来获取豆瓣网上电影信息的简介

廉价感情. 提交于 2020-01-09 18:49:12
<?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回车

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!