<?php
header(
"content-type:text/html;charset=utf-8"
);
class
Collect
{
public
$userAgent
= NULL;
// 伪造浏览器标识
protected
$url
;
//网页地址
protected
$object
;
protected
$curlInfo
=
array
();
// 采集信息
/** 公共初始化 CURL 选项 */
protected
function
_init(
$url
=
''
,
$issetcookie
=FALSE,
$isfollow
=FALSE)
{
$this
->url =
$url
;
$this
->object = curl_init(
$this
->url);
date_default_timezone_set(
'PRC'
);
curl_setopt(
$this
->object, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$this
->object, CURLOPT_HEADER, 0);
if
(isset(
$this
->userAgent))
{
curl_setopt(
$this
->object,CURLOPT_USERAGENT,
$this
->userAgent);
}
// 是否设置 COOKIE
if
(
$issetcookie
)
{
curl_setopt(
$this
->object, CURLOPT_COOKIESESSION, TRUE);
curl_setopt(
$this
->object, CURLOPT_COOKIEFILE,
"cookiefile"
);
curl_setopt(
$this
->object, CURLOPT_COOKIEJAR,
"cookiefile"
);
}
if
(
$isfollow
)
{
curl_setopt(
$this
->object, CURLOPT_FOLLOWLOCATION,1);
//允许url跳转
}
}
/**
* get 抓取网页 调用接口
* url 抓取的网页
* pearm 参数
*/
public
function
curlGet(
$url
,
$pearm
=
''
)
{
$str
=
''
;
if
(
is_array
(
$pearm
))
{
foreach
(
$pearm
as
$key
=>
$value
) {
if
(
empty
(
$str
))
{
$str
.=
'?'
.
$key
.
'='
.
$value
;
}
else
{
$str
.=
'&'
.
$key
.
'='
.
$value
;
}
}
}
else
{
$str
=
'?'
.
$pearm
;
}
$this
->_init(
$url
.
$str
);
$content
=
$this
->curlExec(
$this
->object);
// curl_close($this->object);
return
$content
;
}
/**
* post 抓取网页 调用接口
* url 网址
* pearm 参数
*/
public
function
curlPost(
$url
,
$pearm
=
''
)
{
$this
->_init(
$url
);
curl_setopt(
$this
->object, CURLOPT_POST, 1);
//使用post去传值
curl_setopt(
$this
->object, CURLOPT_POSTFIELDS,
$pearm
);
// 传递参数
curl_setopt(
$this
->object, CURLOPT_HTTPHEADER,
array
(
'application/x-www-form-urlencoded'
,
'Content-length: '
.
strlen
(
$pearm
)));
$content
=
$this
->curlExec(
$this
->object);
return
$content
;
}
/**
* 获取抓取信息
*/
public
function
getInfo()
{
return
curl_getinfo(
$this
->object);
}
/**
* 释放句柄
*/
public
function
__destruct()
{
curl_close(
$this
->object);
}
/**
* 执行curl会话
*/
protected
function
curlExec(
$object
)
{
$info
= curl_exec(
$this
->object);
if
(curl_errno(
$this
->object))
{
return
'Curl error: '
. curl_error(
$this
->object);
}
else
{
return
$info
;
}
}
}
//------------------------------- GET DEMO ----------------------------------------
/* 780天气接口*/
// $url = "http://api.k780.com:88";
// $data = "app=weather.today&weaid=101010100&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml";
// $data = array(
// 'app' => 'weather.today',
// 'weaid' => '101010100',
// 'appkey'=> '10003',
// 'sign' => 'b59bc3ef6191eb9f747dd4e83c99f2a4',
// 'format'=> 'xml',
// );
// $ob = new Collect;
// echo $content = $ob->curlGet($url,$data);
// die();
//=======================================================================//
//------------------------------- GET DEMO ----------------------------------------
// 调用百度天气接口(该方式会限制次数)
// $url = "http://api.map.baidu.com/telematics/v3/weather";
// // $data = "location=吉林&output=JSON&ak=FK9mkfdQsloEngodbFl4FeY3";
// $data = array(
// 'location' => '太原',
// 'output' => 'JSON',
// 'ak' => 'FK9mkfdQsloEngodbFl4FeY3',
// );
// $ob = new Collect;
// echo $content = $ob->curlGet($url,$data);
// die();
//=======================================================================//
//------------------------------- POST DEMO ----------------------------------------
// 调用web天气接口 (post)
// $url = 'www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName';
// $param = 'theCityName=石家庄';
// $ob = new Collect;
// $ob->userAgent = $_SERVER['HTTP_USER_AGENT'];
// echo $ob->curlPost($url,$param);
// print_r($ob->getInfo());
// die();
//=======================================================================//