| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
suxiang.
8年前发布

php代码获取豆瓣网上电影信息的简介

[PHP]代码

<?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!";  ?>