先祭奠一下逝去的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); } } ?>