curl自动登录CNZZ获得数据(数据采集)

<?php
/**
 * @author Leiming Wang<wlm131127@163.com>
 */



/*
 * curl请求
 * @param string $url
 * @param array $option
 * @return mixed $return;
 */

function CurlRequest($url,$options){
    $return = false;
    $tmp = '';
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $tmp = curl_exec($ch);
    if($tmp){
        $return  = $tmp;
    }
    curl_close($ch);
    return $return;
}

/**
 * 正则函数抓取数据
 * @param string $pattern
 * @param string $subject
 * @param array()
 */
function PregMatch($pattern,$subject,$all = false){
    if(empty($pattern) || empty($subject))  return array();
    $matches = array();
    if($all){
        preg_match_all($pattern, $subject, $matches);
    }else{
        preg_match($pattern, $subject,$matches);
    }
    return $matches;
}



/**
 * 登录CNZZ网站,并取得相应账户下网站列表昨日的IP及PV量
 * @param array $params
 * @return mixed $return 登录后网站的内容  or FALSE(登录失败)
 */
function LoginCNZZWeb($params = array()){
    $return  = false;
    $webList = '';
    $cookie_jar = 'a.txt';
    $siteIdArray = array();
    
    //登录CNZZ网站
    $url = C('CNZZ_LOGIN_URL');
    $post = 'username=' . C('CNZZ_USER') . '&passwd=' . C('CNZZ_PWD') . '&productType=' .C('CNZZ_PT') . '&remeber=' . C('CNZZ_RE') . '&verifyCode=' . C('CNZZ_VC');
    $option = array(
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_TIMEOUT        => 30,
                CURLOPT_FOLLOWLOCATION => 1,
                CURLOPT_HEADER             => 0,
                CURLOPT_NOBODY           => 0,
                CURLOPT_POST           => 1,
                CURLOPT_POSTFIELDS       => $post,
                CURLOPT_COOKIEJAR       => $cookie_jar,    
                CURLOPT_COOKIEFILE     => $cookie_jar,
    );
    CurlRequest($url,$option);
    
    //获得该账户下网站ID
    $i = 1;
    do{
        $url = C('CNZZ_SITE_LIST_URL') . $i;
        $option = array(
                    CURLOPT_RETURNTRANSFER => 1,
                    CURLOPT_TIMEOUT        => 30,
                    CURLOPT_COOKIEFILE     => $cookie_jar,
                    CURLOPT_COOKIEJAR       => $cookie_jar,
        );
        $webList = CurlRequest($url,$option);
        if($i == 1){
            $pattern = '/<a[^>]*?&page=([\d]*)&everypage[^>]*?>.*?<\/a>/is';
            $pages = PregMatch($pattern,$webList,true);
            $pages = $pages[1];
            rsort($pages);
            $pages = intval($pages[0]);
        }
        $i++;
        $pattern = '/siteid=([\d]+)&/is';
        $siteId = PregMatch($pattern,$webList,TRUE);
        $siteId = array_unique($siteId[1]);
        $siteIdArray = array_merge($siteIdArray,$siteId);
    }while($pages-- > 1);
    
    //获得相应站点ID网址及IP、PV值
    $num = count($siteIdArray);
    for($i = 0; $i < $num; $i++){
        $url = C('CNZZ_SITE_SINGLE_URL') . $siteIdArray[$i];
        $option = array(
                    CURLOPT_RETURNTRANSFER => 1,
                    CURLOPT_TIMEOUT        => 30,
                    CURLOPT_COOKIEFILE     => $cookie_jar,
                    CURLOPT_COOKIEJAR       => $cookie_jar,
        );
        $content = CurlRequest($url,$option);
        $pattern = '/<span[^>]*?style=[\"|\']{1}float:[\s]*left;[\s]*line-height:[\s]*25.*?<strong>(.*?)<\/strong>.*?href=[\"|\']{1}([^\"|\']*?)[\"|\']{1}.*?<\/span>/is';
        $siteInfo = PregMatch($pattern,$content,true);
        $tmp['siteId'] = $siteIdArray[$i];
        $tmp['url'] = $siteInfo[2][0];
        $tmp['title'] = $siteInfo[1][0];
        $pattern = '/class=[\"|\']{1}num1[\"|\']{1}[^>]*?><strong>([\d|\d\.\d]*)<\/strong>[^<>]*?<\/td>/is';
        $ip = PregMatch($pattern,$content,true);
        $tmp['pv'] = $ip[1][5];
        $tmp['ip'] = $ip[1][7];
        $return[] = $tmp;
    }
    return $return;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值