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