php实现采集电影数据

本文使用PHP结合CURLOPT库,实现对特定网站电影列表页的抓取,并解析获取电影的详细信息,包括导演、主演及海报图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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;
    
    
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值