(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 '
进入去重函数处理
'; 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 '正则匹配结果如下:
'; // print_r($aUrl); // echo '
'; return $aUrl; }

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

你可能感兴趣的:(php,爬虫之旅,php,爬虫,优酷)