使用正则表达式获取电影天堂下载地址

前端之家收集整理的这篇文章主要介绍了使用正则表达式获取电影天堂下载地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
先祭奠一下逝去的6级考试,临考准考证丢失5555555....索性就不考了,学习下的正则表达式吧
<?PHP function getMovies(){ $date = "20150610"; $i = 0; $num = 48276; while($num <= 48286){ //获取页面 $orgin = file_get_contents("http://www.ygdy8.net/html/gndy/dyzz/".$date."/".$num.".html"); if(strlen($orgin) > 10000){ //获取电影名称 preg_match_all('/[a-z]+=#[\da]+>(.*?)<\/font><\/h1><\/div>/',$orgin,$movie_name); //获取电影链接 preg_match_all("/<a\s*.*>.*?<\/a>/",$movie_link); //整理存入数组 $arr[$i]["name"] = $movie_name[1][0]; $arr[$i]["link"] = $movie_link[0][68]; $i +=1; //进入下一个数组 } $num +=1; } echo "<pre>"; print_r ($arr); echo "</pre>"; } getMovies();

存在问题:
1.页面链接的规律没找出:找到年月日与电影id的范围的关系,可以把它动态化,实现用户输入日期,搜索出当天的电影
2.时间缓存问题
1) 正则写的不是很完善,不精确导致时间缓慢,数据冗余
2) 算法方面问题待优化
3.漏洞,在数组获取链接时的问题,即电影链接不是第68个 $movie_link[0][68]; 就出糗了

待提高中……
吃饭去!!


日期输入20150610,显示0610当天的电影

日期输入20150611,显示0611当天的电影

<?PHP define("MOVIES_DIR","movies/"); $data = file_get_contents("http://www.dytt8.net/"); //获取一级页面 $model_one = "/<li>\s*<a href=\"(.*?)\">(.*?)<\/a>/U"; preg_match_all($model_one,$data,$menusList); //匹配出所要的分类名称链接 $menusList['url'] = $menusList[1]; //提取链接 $menusList['name'] = $menusList[2]; //提取名称 for($i=0 ;$i<8; $i++){ //页面中有八个分类符合下边年正则的规则,循环8次 $movies_path=MOVIES_DIR.$menusList['name'][$i]; // 目录不存在创建目录 if(!is_dir($movies_path)){ mkdir($movies_path,0700,true); //因为设计到多层文件夹,所以打开递归true } $base_url = $menusList['url'][$i]; //上边获取的URL是相对路径 $data = file_get_contents($base_url); //获取二级页面代码 $model_two = "/<b>.*<a href=\"(.*)\"/sU"; // $model_two = "/<b>.*<a href=\"(.*?)\"/s";//和上边比较???????????????????????????????????  preg_match_all($model_two,$moviesList); //得到三级页面地址 foreach ($moviesList['1'] as $moviesList) { $base_url = "http://www.ygdy8.net".$moviesList; //上边获取的URL是相对路径,补全它 $data = file_get_contents($base_url); //获取三级页面代码 // 获取电影名称 $model_three_name = "/#07519a>(.*?)<\/font>/"; preg_match($model_three_name,$movie); $movies["name"] = $movie[1]; // print_r($movies['name']);exit; //测试成功 // 获取电影链接 $model_three_url = "/#fdfddf\"><a href=\"(.*?)\">/"; preg_match($model_three_url,$movie); $movies["url"] = $movie[1]; // print_r($movies['url']);exit; //测试成功 // 获取电影简介 $model_three_intro = "/<br \/><br \/>◎(.*?)<br \/><br \/>/"; preg_match($model_three_intro,$movie); @$movies["intro"] = $movie[1]; //因为有的页面没有此项或搜索错误+@ // print_r($movies['intro']);exit; //测试成功 // 获取电影图片 $model_three_pic = "/<p><br \/><img border=\"0\" src=\"(.*?)\" alt=/"; preg_match($model_three_pic,$movie); @$movies["pic"] = $movie['1']; //因为有的页面没有此项或搜索错误+@ // print_r($movie);exit; // 数据获取完成,进行数据存储 $result=""; foreach ($movies as $key => $value) { $result .="电影".$key."是:".$value."\r\n"; } // print_r($movies);exit; //测试成功 @file_put_contents($movies_path."/".$movies["name"].".txt",$result); } } ?>

猜你在找的正则表达式相关文章