正则爬取电影天堂电影信息

最初,只是简单的测试,但运行效率低下,获取数量十分的少,后稍加改良,
可以一次性抓取到8个分类下的近300个电影(没有考虑分页的问题),以后有机会再优化吧。

原文地址http://blog.csdn.net/ty_hf/article/details/46484065
 10000){
				//获取电影名称
					preg_match_all('/[a-z]+=#[\da]+>(.*?)<\/font><\/h1><\/div>/',$orgin, $movie_name);
				//获取电影链接
					preg_match_all("/.*?<\/a>/",$orgin, $movie_link);
				//整理存入数组
					$arr[$i]["name"] = $movie_name[1][0];
					$arr[$i]["link"] = $movie_link[0][68];
					$i +=1;			//进入下一个数组
				}
				$num +=1;
			}
			echo "
";
			print_r ($arr);
			echo "
"; } getMovies();

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

待提高中…
吃饭去!!

正则爬取电影天堂电影信息_第1张图片
日期输入20150610,显示0610当天的电影
正则爬取电影天堂电影信息_第2张图片
日期输入20150611,显示0611当天的电影
正则爬取电影天堂电影信息_第3张图片

\s*(.*?)<\/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 = "/.*/";
			preg_match($model_three_url,$data,$movie);
			$movies["url"] = $movie[1];
			// print_r($movies['url']);exit;							//测试成功

			// 获取电影简介
			$model_three_intro = "/

◎(.*?)

/"; preg_match($model_three_intro,$data,$movie); @$movies["intro"] = $movie[1]; //因为有的页面没有此项或搜索错误+@ // print_r($movies['intro']);exit; //测试成功 // 获取电影图片 $model_three_pic = "/


/"; $value) { $result .="电影".$key."是:".$value."\r\n"; } // print_r($movies);exit; //测试成功 @file_put_contents($movies_path."/".$movies["name"].".txt", $result); } } ?>

你可能感兴趣的:(正则爬取电影天堂电影信息)