<?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;
}
/**
* @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;
}