(2)php爬虫---提取优酷动漫的外链与介绍

  因为最近比较忙,所以距离第一篇的php爬虫已经相隔了比较远的时间了。最近终于解放了,时间也比较充足,而且环境上也不错,有稳定的网络可以使用,所以现在就把之前的坑再填一点吧。

  在第一篇的时候写得比较随意,所以看起来会很乱。所以之后我就重构了代码,将所有的代码都进行了封装使用,这样子就不会太过于乱,也增加了代码重用的可能性了。

首先我们定义一些类变量,用来进行数据保存。

 public  $allUrl,//所有资源的url
            $childUrl,//同一部资源的播放页面url
            $data;//所有资源信息汇集的数组
    private $_ch,//curl的存储变量
        $myRegex;//正则规则

然后这个类的话,最重要的一部分就是curl的使用,所以这里面可以直接在初始化函数里面创建一个curl对象,而且这里面的话会涉及到非常多的连接,所以这个变量要到了程序结束之后,才被释放。

//构造函数
    public function __construct(){
        $this->_ch = curl_init();
        // 设置URL和相应的选项
        curl_setopt($this->_ch,CURLOPT_HEADER,0);//如果你想把一个头包含在输出中,设置这个选项为一个非零值。
        curl_setopt($this->_ch,CURLOPT_RETURNTRANSFER,true);//将数据以字符串形式返回,而不是显示出来
    }

    //析构函数
    function __destruct()
    {
        // TODO: Implement __destruct() method.
        curl_close($this->_ch);
    }
这里面还定义了一个去重函数封装在了类里面,因为我的操作都是写在类里面的,所以直接封装起来,使用起来会方便使用。这个函数主要是将二维转为一维数组再使用内置函数array_unique来进行去重,之后再使用explode来将一维数组转为二维数组。

//去重函数
    function array_unique_my($arr){
        //echo '<br/>进入去重函数处理<br/>';
        foreach($arr as $v){
            $v = join(',',$v);//降维,变为一维数组
            $temp[] = $v;
        }
        $tmp = array_unique($temp);
        unset($temp);
        foreach($tmp as $v){
            $v = explode(',',$v);//升维,变为二维数组
            $temp[] = $v;
        }
        return $temp;
    }

还有一堆基本的函数如下:

传一个正则数组进来:

//初始化正则表达式数组
    public function initRegex($arr){
        $this->myRegex = $arr;
    }
设置一个爬取的页面然后返回一个html文件数据

//设置爬取的页面url
    public function setTargetUrl($url){

        curl_setopt($this->_ch,CURLOPT_URL,$url);
        //var_dump("进入setTargetUrl函数");
        $html = curl_exec($this->_ch);
        return $html;
    }
正则匹配我们所需要的内容函数

这里面记得要处理换行,回车,制表等符号。

//设置正则表达式
    public function userRegex($rex,$str){
        if(is_array($str)){
            $str = serialize($str);
        }
        //预处理换行,回车,制表
        $str = preg_replace("/[\t\n\r]+/","",$str);
        preg_match_all($rex,$str,$aUrl,PREG_SET_ORDER);

//        echo '正则匹配结果如下:<br/>';
//        print_r($aUrl);
//        echo '<br/>';
        return $aUrl;
    }

封装php原生的文件写入和文件读取的函数:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值