<?php
header("Content-type:text/html;charset=utf-8");
/**
* Express.class.php 快递查询类
* @copyright chzeze
* @lastmodify 2015-10-28
*/ class Express { private $expressname =array(); //封装了快递名称 function __construct(){
$this->expressname = $this->expressname();
} /*
* 采集网页内容的方法
*/
private function getcontent($url){
if(function_exists("file_get_contents")){
$file_contents = file_get_contents($url);
}else{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
/*
* 获取对应名称和对应传值的方法
*/
private function expressname(){
$result = $this->getcontent("http://www.kuaidi100.com/");
//爬取快递名称对应的快递代码
preg_match_all("/data\-code\=\"(?P<name_code>\w+)\"\>(?P<name>.*)\<\/a>/iU",$result,$data);//(?P<name>)正则匹配存储字符
$name = array();
//var_dump($data['name']);
//echo "<br>";
foreach($data['name'] as $k=>$v){
$name[$v] =$data['name_code'][$k];//例:$name[中通]=zhontong
//echo "[".$v."]=".$name[$v]."<br>";//获取快递编码
}
//echo "一次查询"."<br>";
return $name;
} /*
* 解析object成数组的方法
* @param $json 输入的object数组
* return $data 数组
*/
private function json_array($json){
if($json){
foreach ((array)$json as $k=>$v){
$data[$k] = !is_string($v)?$this->json_array($v):$v;
}
return $data;
}
}
public function getorder($name,$order){
$keywords = $this->expressname[$name];
//var_dump($keywords);
//$keywords=shunfeng;
//$order=688625443909;
$result = $this->getcontent("http://www.kuaidi100.com/query?type={$keywords}&postid={$order}");
$result = json_decode($result);
$data = $this->json_array($result);
return $data;
}
}
$a = new Express(); echo "PHP快速抓取快递信息"."<br>"; echo "<p>/************************************************************/</br>";
for($num=688625443900;$num<=688625443910;$num++)
{
echo "<br>快递单号:".$num;
$result = $a->getorder("顺丰",$num);
if(isset($result['nu']))
{
echo " 更新时间".$result['updatetime']."<br>";//生成表格
echo "<table border=\"1\">";
echo "<tr>";
echo "<th>时间</th>";
echo "<th>地点和跟踪进度</th>";
echo "</tr>";
foreach($result['data'] as $k=>$v)
{
echo "<tr>";
echo "<td>".$v['time']."</td>";
echo "<td>".$v['context']."</td>";
echo "</tr>";
}
echo "</table>";
}
else
{
echo "<br>".$result['message'];//输出错误信息
//var_dump($result);
}
}
echo "</br><p>/************************************************************/</p>";
?>

PHP快速抓取快递信息的更多相关文章

  1. 使用Newspaper3k框架快速抓取文章信息

    一.框架介绍 Newspaper是一个python3库,但是Newspaper框架并不适用于实际工程类新闻信息爬取工作,框架不稳定,爬取过程中会有各种bug,例如获取不到url.新闻信息等,但对于想获 ...

  2. java抓取快递信息

    package zeze; import java.io.IOException; import org.jsoup.Connection; import org.jsoup.Jsoup; impor ...

  3. [原创]adb使用教程v1.0-----by-----使用logcat快速抓取android崩溃日志

    原文再续,书接上回:<使用logcat快速抓取android崩溃日志>中提到的工具包可以下载拉~ <使用logcat快速抓取android崩溃日志>:http://www.cn ...

  4. [原创]adb使用教程v1.1.0-----by-----使用logcat快速抓取android崩溃日志

    原文再续,书接上回:<使用logcat快速抓取android崩溃日志>中提到的工具包可以下载拉~ <使用logcat快速抓取android崩溃日志>:http://www.cn ...

  5. 利用pandas库中的read_html方法快速抓取网页中常见的表格型数据

    本文转载自:https://www.makcyun.top/web_scraping_withpython2.html 需要学习的地方: (1)read_html的用法 作用:快速获取在html中页面 ...

  6. 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(3): 抓取amazon.com价格

    通过上一篇随笔的处理,我们已经拿到了书的书名和ISBN码.(网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(2): 抓取allitebooks.com书籍信息 ...

  7. 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(2): 抓取allitebooks.com书籍信息及ISBN码

    这一篇首先从allitebooks.com里抓取书籍列表的书籍信息和每本书对应的ISBN码. 一.分析需求和网站结构 allitebooks.com这个网站的结构很简单,分页+书籍列表+书籍详情页. ...

  8. .net抓取网页信息 - Jumony框架使用1

    往往在实际开发中,经常会用到一些如抓取网站信息之类的的操作,往往大家采用的是用一些正则的方式获取,但是有时候正则是很死板的,我们常常试想能不能使用jquery的选择器,获取符合自己要求的元素,然后进行 ...

  9. Jumony快速抓取网页

    Jumony快速抓取网页 --- Jumony使用笔记--icode   作者:郝喜路   个人主页:http://www.cnicode.com      博客地址:http://haoxilu.c ...

随机推荐

  1. 图解NodeJS【基于事件、回调的单线程高性能服务器】原理

    刚开始了解Node感觉很吊,各种说高性能,可是一直不理解为什么单线程会比多线程快?为什么异步IO比非阻塞IO快?因此,本篇在阅读相关书籍后,根据自己的理解,整理此文,如有错误,仅代表理论不精,必当修改 ...

  2. 解决HTML5布局,兼容IE问题

    当我们使用h5的新标签,header,footer,aside,section,article...时,会遇到低版本IE不兼容问题,如下图: 解决方案:引入如下JS代码,即可 (这里我就直接放源码了, ...

  3. MySQL性能分析

    第一步 检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU.内存.交换.磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cp ...

  4. IntelliJ13+tomcat+jrebel实现热部署(亲测可用)

       网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下:   一.先下载jrebel安 ...

  5. Owin中间件搭建OAuth2.0认证授权服务体会

    继两篇转载的Owin搭建OAuth 2.0的文章,使用Owin中间件搭建OAuth2.0认证授权服务器和理解OAuth 2.0之后,我想把最近整理的资料做一下总结. 前两篇主要是介绍概念和一个基本的D ...

  6. 【bzoj1562】 NOI2009—变换序列

    http://www.lydsy.com/JudgeOnline/problem.php?id=1562 (题目链接) 题意 给出一个序列(0~n-1),这个序列经过某个变换会成为另外一个序列,但是其 ...

  7. 洛谷P1508 Likecloud-吃、吃、吃

    题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...

  8. Codeforces 650C Table Compression

    传送门 time limit per test 4 seconds memory limit per test 256 megabytes input standard input output st ...

  9. appium向右滑动

    /*** * 右滑1/2屏幕 / public static void slideRight(){ int x=driver.manage().window().getSize().width; in ...

  10. jquery------使用jQuery的委托方法

    index.jsp <div id="gallery"> <div class="photo"> <img src="a ...