php实现采集电影数据
2014-11-07 23:51
411 查看
<?php
header("content-type:text/html;charset=utf-8");
//初始化curl
$curl = curl_init();
//突破防盗链
curl_setopt($curl, CURLOPT_REFERER, "www.7060.com");
//设置curl的url
curl_setopt($curl, CURLOPT_URL, "http://www.7060.mobi/list/1_0_8_0_0_0_new.html");
//设置不限制时间
set_time_limit(0);
//设置将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$str= curl_exec($curl);
//定义下载图片的路径
if(!is_dir("./caiji")){
mkdir("./caiji");
}else{
$dir="./caiji";
}
//截取后的内容
$content =cut_str('<div id="haibaoBox">','<div class="pager">', $str);
//<a></a>的正则
$preg ='/<a\s*href=(\"|\')*(.*)\1[^>]*>(.*)<\/a>/U';
//$patt ='/<a\s*href=("|\')(.*)\1[^>]*>(.*)<\/a>/U';
//匹配结果放入数组$a中
preg_match_all($preg, $content,$a);
echo "<pre>";
//遍历$a,
foreach ($a[0] as $k =>$v){
$data["www.7060.mobi".$a[2][$k]] =array(
"title"=>strip_tags($a[3][$k]),
"litpic"=>cut_str('data-original="','" src="', $a[3][$k])
);
//结果如下
// [www.7060.mobi/movie/21471.html] => Array
// (
// [title] => 科洛弗档案
// [litpic] => http://7060.2bao.cc/upload/s/2013-12/545c25ade77bf.jpg
// )
}
//var_dump($data);
//声明一个数组保存收集的电影数据
$list =array();
foreach ($data as $k=>$v){
$row['title']=$v['title'];
$row['daoyan']=downdaoyan($curl,$k);
$row['zhuyan']=downzhuyan($curl,$k);
$row['litpic']=downpicture($curl, $v['litpic'],$dir);
//$row['litpic']=$v['litpic'];
$list[]=$row;
}
var_dump($list);
/*得到详细页面导演
* $url,详细页面地址
* $curl,curl初始化资源
* $dir 图片保存路径
* */
function downdaoyan($curl,$url){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
//<li><span>导演:</span><a target="_blank" href="/vod-%E9%A9%AC%E7%89%B9%C2%B7%E9%87%8C%E5%A4%AB%E6%96%AF.html">马特·里夫斯</a></li>
$dypreg ='/<li><span>导演:<\/span>(.*)<\/li>/';
preg_match($dypreg, $xiangxi,$a);
$daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
return trim($daoyan,",");
}
/*得到详细页面主演
* $url,详细页面地址
* $curl,curl初始化资源
* */
function downzhuyan($curl,$url){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
//<li><span>主演:</span><a target="_blank" href="/vod-%E6%9D%8E%E7%81%BF%E7%87%90.html">李灿燐</a><a target="_blank" href="/vod-%E6%A2%81%E5%98%89%E7%90%AA.html">梁嘉琪</a><a target="_blank" href="/vod-%E7%BD%97%E6%A0%91%E7%85%8C.html">罗树煌</a><a target="_blank"
href="/vod-%E9%BB%84%E7%88%B5%E6%99%93.html">黄爵晓</a></li>
$zypreg ='/<li><span>主演:<\/span>(.*)<\/li>/';
preg_match($zypreg, $xiangxi,$a);
$daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
return trim($daoyan,",");
}
/*得到详细页面图片
* $url,详细页面图片地址
* $curl,curl初始化资源
* $dir,图片路径
* */
function downpicture($curl,$url,$dir){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
// //<span class="down_neirLeft_Pic"><img src="http://7060.2bao.cc/upload/b/2014-11/5459a8d001146.jpg" alt="最后的学生时代下载" width="185" height="245" /></span>
// $tppreg ='/<span\s*class="down_neirLeft_Pic"><img src="(.*)"\s*alt="/';
// preg_match($dypreg, $xiangxi,$a);
// $daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
// return trim($daoyan,",");
//http://7060.2bao.cc/upload/s/2013-12/545c25ade77bf.jpg
//得到文件名
$filename = substr(strrchr($url,"/"),1);
//保存图片
file_put_contents($dir."/".$filename, $xiangxi);
return $dir."/".$filename;
}
/*
* 截取字符串的函数
* $start 开始的字符
* $end 结束的字符
* $str 截取源
* */
function cut_str($start,$end,$str){
//通过开始位置和结束位置求出长度用substr获取字符串
$s = strpos($str, $start)+strlen($start);
$e = strpos($str, $end);
$offset = $e-$s;
return substr($str, $s,$offset);
//echo $e;
}
header("content-type:text/html;charset=utf-8");
//初始化curl
$curl = curl_init();
//突破防盗链
curl_setopt($curl, CURLOPT_REFERER, "www.7060.com");
//设置curl的url
curl_setopt($curl, CURLOPT_URL, "http://www.7060.mobi/list/1_0_8_0_0_0_new.html");
//设置不限制时间
set_time_limit(0);
//设置将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$str= curl_exec($curl);
//定义下载图片的路径
if(!is_dir("./caiji")){
mkdir("./caiji");
}else{
$dir="./caiji";
}
//截取后的内容
$content =cut_str('<div id="haibaoBox">','<div class="pager">', $str);
//<a></a>的正则
$preg ='/<a\s*href=(\"|\')*(.*)\1[^>]*>(.*)<\/a>/U';
//$patt ='/<a\s*href=("|\')(.*)\1[^>]*>(.*)<\/a>/U';
//匹配结果放入数组$a中
preg_match_all($preg, $content,$a);
echo "<pre>";
//遍历$a,
foreach ($a[0] as $k =>$v){
$data["www.7060.mobi".$a[2][$k]] =array(
"title"=>strip_tags($a[3][$k]),
"litpic"=>cut_str('data-original="','" src="', $a[3][$k])
);
//结果如下
// [www.7060.mobi/movie/21471.html] => Array
// (
// [title] => 科洛弗档案
// [litpic] => http://7060.2bao.cc/upload/s/2013-12/545c25ade77bf.jpg
// )
}
//var_dump($data);
//声明一个数组保存收集的电影数据
$list =array();
foreach ($data as $k=>$v){
$row['title']=$v['title'];
$row['daoyan']=downdaoyan($curl,$k);
$row['zhuyan']=downzhuyan($curl,$k);
$row['litpic']=downpicture($curl, $v['litpic'],$dir);
//$row['litpic']=$v['litpic'];
$list[]=$row;
}
var_dump($list);
/*得到详细页面导演
* $url,详细页面地址
* $curl,curl初始化资源
* $dir 图片保存路径
* */
function downdaoyan($curl,$url){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
//<li><span>导演:</span><a target="_blank" href="/vod-%E9%A9%AC%E7%89%B9%C2%B7%E9%87%8C%E5%A4%AB%E6%96%AF.html">马特·里夫斯</a></li>
$dypreg ='/<li><span>导演:<\/span>(.*)<\/li>/';
preg_match($dypreg, $xiangxi,$a);
$daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
return trim($daoyan,",");
}
/*得到详细页面主演
* $url,详细页面地址
* $curl,curl初始化资源
* */
function downzhuyan($curl,$url){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
//<li><span>主演:</span><a target="_blank" href="/vod-%E6%9D%8E%E7%81%BF%E7%87%90.html">李灿燐</a><a target="_blank" href="/vod-%E6%A2%81%E5%98%89%E7%90%AA.html">梁嘉琪</a><a target="_blank" href="/vod-%E7%BD%97%E6%A0%91%E7%85%8C.html">罗树煌</a><a target="_blank"
href="/vod-%E9%BB%84%E7%88%B5%E6%99%93.html">黄爵晓</a></li>
$zypreg ='/<li><span>主演:<\/span>(.*)<\/li>/';
preg_match($zypreg, $xiangxi,$a);
$daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
return trim($daoyan,",");
}
/*得到详细页面图片
* $url,详细页面图片地址
* $curl,curl初始化资源
* $dir,图片路径
* */
function downpicture($curl,$url,$dir){
//获得详细页面内容
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xiangxi =curl_exec($curl);
// //<span class="down_neirLeft_Pic"><img src="http://7060.2bao.cc/upload/b/2014-11/5459a8d001146.jpg" alt="最后的学生时代下载" width="185" height="245" /></span>
// $tppreg ='/<span\s*class="down_neirLeft_Pic"><img src="(.*)"\s*alt="/';
// preg_match($dypreg, $xiangxi,$a);
// $daoyan =preg_replace(array('/<a[^>]*>/','/<\/a>/'), array("",","), $a[1]);
// return trim($daoyan,",");
//http://7060.2bao.cc/upload/s/2013-12/545c25ade77bf.jpg
//得到文件名
$filename = substr(strrchr($url,"/"),1);
//保存图片
file_put_contents($dir."/".$filename, $xiangxi);
return $dir."/".$filename;
}
/*
* 截取字符串的函数
* $start 开始的字符
* $end 结束的字符
* $str 截取源
* */
function cut_str($start,$end,$str){
//通过开始位置和结束位置求出长度用substr获取字符串
$s = strpos($str, $start)+strlen($start);
$e = strpos($str, $end);
$offset = $e-$s;
return substr($str, $s,$offset);
//echo $e;
}
相关文章推荐
- php实现的一个很好用HTML解析器类可用于采集数据
- PHP使用3种方法实现数据采集
- php将HTML表格每行每列转为数组实现采集表格数据的方法
- php实现的一个很好用HTML解析器类可用于采集数据
- php中CURL实现模拟登录并采集数据
- PHP使用3种方法实现数据采集
- PHP使用3种方法实现数据采集
- PHP使用三种方法实现数据采集
- PHP使用3种方法实现数据采集
- PHP使用3种方法实现数据采集
- [置顶] PHP之数据采集[抓取阿里巴巴上宁波企业的详细信息] - 非正则实现
- php实现的一个很好用HTML解析器类可用于采集数据
- 数据采集必备知识-php计划任务的实现
- PHP实现简单线性回归之数据研究工具(1)
- php录入页面中动态从数据库中提取数据的实现
- 用PHP实现多服务器共享SESSION数据的方法
- php+javascript+css 实现动态添加数据行
- PHP 实现多服务器共享 SESSION 数据
- 利用PHP-ExcelReader实现PHP导入Excel数据[不通过CSV]
- 大型现场数据采集无线应用系统实现方案的研究