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!"; ?>
本文由用戶 suxiang. 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!