作者/来源:yixinu.com
栏目:运维/编程
日期:2015-01-07 17:11:09
<?php
/**
* 通过抓取快递100网页数据 获取 快递单详细信息
*
* 为什么不使用快递100的申请账号?
* 第一:申请账号有访问限制 ; 第二:不想泄露个人信息; 第三:这样使用快捷方便 。
* @author 青竹丹枫 Kyle <316686606@qq.com>
*/
/**
* 模拟IE浏览器 抓取网页
* @param type $from_url
* @param type $url
* @return type
*/
function gethtml($from_url,$url){
$ch = curl_init();
//设置 来路,这个很重要 ,表示这个访问 是从 $form_url 这个链接点过去的。
curl_setopt($ch,CURLOPT_REFERER,$from_url);
//获取 的url地址
curl_setopt ($ch,CURLOPT_URL,$url);
//设置 返回原生的(Raw)输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//发送POST请求 CURLOPT_CUSTOMREQUEST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
//模拟浏览器发送报文 ,这里模拟 IE6 浏览器访问
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
$res = curl_exec($ch);
curl_close ($ch);
return $res;
}
/**
* 根据快递单模糊搜索,找出有该快递单号的快递公司
* @param type $id 快递单号
* @return type 返回数组
*/
function searchkuaidi($id){
$jsondata = gethtml("www.kuaidi100.com","http://www.kuaidi100.com/autonumber/auto?num=$id");
return json_decode($jsondata,true);
}
/**
*
* @param type $id 快递单号
* @param type $com 快递公司代码
*
* 成功时返回 :
Array
(
[message] => ok
[nu] => 7595512801
[companytype] => yuantong
[ischeck] => 1
[com] => yuantong
[updatetime] => 2015-01-07 17:04:45
[status] => 200
[condition] => F00
[codenumber] => 7595512801
[data] => Array
(
[0] => Array
(
[time] => 2014-12-23 14:52:01
[location] =>
[context] => 广东省云浮市罗定市公司 已签收
[ftime] => 2014-12-23 14:52:01
)
[1] => Array
(
[time] => 2014-12-23 09:59:48
[location] =>
[context] => 广东省云浮市罗定市公司 派件中
[ftime] => 2014-12-23 09:59:48
)
[2] => Array
(
[time] => 2014-12-22 17:27:54
[location] =>
[context] => 广东省云浮市罗定市公司 已收入
[ftime] => 2014-12-22 17:27:54
)
[3] => Array
(
[time] => 2014-12-21 07:17:38
[location] =>
[context] => 广州转运中心公司 已发出
[ftime] => 2014-12-21 07:17:38
)
[4] => Array
(
[time] => 2014-12-21 06:20:06
[location] =>
[context] => 广州转运中心公司 已拆包
[ftime] => 2014-12-21 06:20:06
)
[5] => Array
(
[time] => 2014-12-21 01:52:14
[location] =>
[context] => 虎门转运中心公司 已打包
[ftime] => 2014-12-21 01:52:14
)
[6] => Array
(
[time] => 2014-12-21 01:04:15
[location] =>
[context] => 虎门转运中心公司 已收入
[ftime] => 2014-12-21 01:04:15
)
[7] => Array
(
[time] => 2014-12-20 23:39:42
[location] =>
[context] => 广东省中山市公司 已发出
[ftime] => 2014-12-20 23:39:42
)
[8] => Array
(
[time] => 2014-12-20 23:27:22
[location] =>
[context] => 广东省中山市公司 已收入
[ftime] => 2014-12-20 23:27:22
)
[9] => Array
(
[time] => 2014-12-20 20:37:27
[location] =>
[context] => 广东省中山市公司 已收件
[ftime] => 2014-12-20 20:37:27
)
)
[state] => 3
)
* 错误时返回 :
Array
(
[status] => 201
[message] => 快递公司参数异常:单号不存在或者已经过期
)
*/
function getkuaidi($id,$com){
$data = gethtml("www.kuaidi100.com","http://www.kuaidi100.com/query?type=$com&postid=$id&id=&valicode=");
return json_decode($data,true);
}
echo "<pre>";
//print_r(searchkuaidi("7595512801"));
print_r(searchkuaidi("560031072312"));
print_r(getkuaidi('7595512801','yuantong'));
echo "</pre>";
/**
<!--快递公司代码-->
<select name="com"><option value="aae">AAE全球专递</option>
<option value="auspost">澳大利亚邮政</option>
<option value="aramex">Aramex</option>
<option value="huitongkuaidi">百世汇通</option>
<option value="youzhengguonei">包裹信件</option>
<option value="bpost">比利时邮政</option>
<option value="citylink">City-Link</option>
<option value="coe">COE</option>
<option value="dhl">DHL中国件</option>
<option value="dhlen">DHL全球件</option>
<option value="dhlde">DHL德国件</option>
<option value="disifang">递四方</option>
<option value="ems">EMS</option>
<option value="emsguoji">EMS国际件</option>
<option value="fedex">FedEx国际件</option>
<option value="vancl">凡客配送</option>
<option value="fanyukuaidi">凡宇快递</option>
<option value="fedexcn">Fedex</option>
<option value="fedexus">FedEx美国件</option>
<option value="guotongkuaidi">国通快递</option>
<option value="ganzhongnengda">能达速递</option>
<option value="gongsuda">共速达</option>
<option value="koreapost">韩国邮政</option>
<option value="huaqikuaiyun">华企快运</option>
<option value="jd">京东快递</option>
<option value="jiajiwuliu">佳吉快运</option>
<option value="canpost">加拿大邮政</option>
<option value="jiayunmeiwuliu">加运美</option>
<option value="jialidatong">嘉里大通</option>
<option value="jinguangsudikuaijian">京广速递</option>
<option value="kuayue">跨越速递</option>
<option value="kuaijiesudi">快捷速递</option>
<option value="kuaiyouda">四川快优达</option>
<option value="minbangsudi">民邦速递</option>
<option value="minghangkuaidi">民航快递</option>
<option value="ocs">OCS</option>
<option value="ontrac">OnTrac</option>
<option value="quanfengkuaidi">全峰快递</option>
<option value="quanritongkuaidi">全日通</option>
<option value="quanyikuaidi">全一快递</option>
<option value="quanchenkuaidi">全晨快递</option>
<option value="quanjitong">全际通</option>
<option value="japanposten">日本邮政</option>
<option value="rufengda">如风达</option>
<option value="swisspost">瑞士邮政</option>
<option value="shentong">申通快递</option>
<option value="shunfeng">顺丰速运</option>
<option value="suer">速尔快递</option>
<option value="shenganwuliu">圣安物流</option>
<option value="shengfengwuliu">盛丰物流</option>
<option value="shenghuiwuliu">盛辉物流</option>
<option value="tiantian">天天快递</option>
<option value="tnt">TNT</option>
<option value="ups">UPS</option>
<option value="usps">USPS</option>
<option value="wanjiawuliu">万家物流</option>
<option value="wanxiangwuliu">万象物流</option>
<option value="hkpost">香港邮政</option>
<option value="xinbangwuliu">新邦物流</option>
<option value="xinfengwuliu">信丰物流</option>
<option value="yuantong">圆通速递</option>
<option value="yunda">韵达快递</option>
<option value="youzhengguoji">邮政国际包裹</option>
<option value="youshuwuliu">优速物流</option>
<option value="yuanchengwuliu">远成物流</option>
<option value="ytkd">运通中港快递</option>
<option value="ztky">中铁物流</option>
<option value="zhongtiewuliu">中铁快运</option>
<option value="zhongyouwuliu">中邮物流</option>
<option value="zhongtong">中通速递</option>
<option value="zhaijisong">宅急送</option>
<option value="zengyisudi">增益速递</option>
</select>
*
*/
?>
