关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
Python的爬虫功能是很强大的。现牛刀小试,查询快递信息。
(本文具有时效性,若代码不生效了,可以评论提醒我一下)
首先,要考虑数据来源。这个可以用快递100的数据,打开快递100官网就可以输入单号查询快递信息。
当然,点一下查询按钮,会发送很多请求到服务器,请求快递信息。我们需要分析一下哪个请求链接是有用的。抓包分析可以用fiddler4,这里我就不写这个过程了。大家有兴趣可以去尝试一下,比较简单。
经测试,得到请求链接是 http://www.kuaidi100.com/query?type=xxx&postid=xxx 。其中需要填写type和postid两个参数,分别是快递公司代码和快递单号。请求这个链接可以得到json数据。大概结构如下:
{ "message" : "ok", "nu" : "单号", "com" : "快递公司代码", "data":[ { "time":"2015-12-27 13:24:34", "context":"快递信息1", "ftime":"2015-12-27 13:24:34" }, { "time":"2015-12-27 13:24:34", "context":"快递信息2", "ftime":"2015-12-27 13:24:34" } ] }
这个json数据结构还是一目了然的那我们就可以动手了,源码如下:
# -*- coding: UTF-8 -*- # 特别声明,此源码仅参考研究使用。未经允许,请勿用于商业用途 # By Haddy Yang, 2016-03-02 import urllib import json def getExpress(company,code): '''funcation: Get Express Infomation 2 args company: the express company code code: the express bill code ''' url='http://www.kuaidi100.com/query?type=%s&postid=%s' % (company,code) page=urllib.urlopen(url) #打开链接,请求快递数据 return page.read().decode('utf8') def showResult(jsonStr): '''Show the result''' jsonObj = json.loads(jsonStr) print u'当前状态:', jsonObj.get('message'),'\n' status=jsonObj.get('status') #获取状态代码(200是正常) if status=='200': for x in jsonObj.get('data'): print '%s %s' % (x.get('time'), x.get('context')) #可以用下面代码遍历出全面键值 #for key,value in x.items(): # print key,value if __name__ == '__main__': #测试,顺丰代码:shunfeng jsonStr = getExpress('shunfeng','102290224058') showResult(jsonStr) raw_input()
执行一下,就可以看到查询的结果。
最后,附上我收集的快递公司代码表:
快递公司名称 | 代码 | 快递公司名称 | 代码 | 快递公司名称 | 代码 |
A开头 | 急先达 | jixianda | 微特派 | weitepai | |
澳大利亚邮政 | auspost | 晋越快递 | jinyuekuaidi | X开头 | |
AAE | aae | 捷特快递 | jietekuaidi | 新邦物流 | xinbangwuliu |
安信达 | anxindakuaixi | 金大物流 | jindawuliu | 信丰物流 | xinfengwuliu |
B开头 | 嘉里大通 | jialidatong | 星晨急便 | xingchengjibian | |
百世汇通 | huitongkuaidi | K开头 | 鑫飞鸿 | xinhongyukuaidi | |
百福东方 | baifudongfang | 快捷速递 | kuaijiesudi | 希伊艾斯 | cces |
BHT | bht | 康力物流 | kangliwuliu | 新蛋奥硕物流 | neweggozzo |
包裹/平邮/挂号 | youzhengguonei | 跨越物流 | kuayue | 香港邮政 | hkpost |
邦送物流 | bangsongwuliu | L开头 | Y开头 | ||
C开头 | 联昊通 | lianhaowuliu | 圆通速递 | yuantong | |
希伊艾斯 | cces | 龙邦物流 | longbanwuliu | 韵达快运 | yunda |
传喜物流 | chuanxiwuliu | 蓝镖快递 | lanbiaokuaidi | 运通快递 | yuntongkuaidi |
D开头 | 乐捷递 | lejiedi | 邮政小包 | youzhengguonei | |
大田物流 | datianwuliu | 联邦快递 | lianbangkuaidi | 邮政小包 | youzhengguoji |
德邦物流 | debangwuliu | 联邦快递 | lianbangkuaidien | 远成物流 | yuanchengwuliu |
DPEX | dpex | 立即送 | lijisong | 亚风速递 | yafengsudi |
DHL-中国件 | dhl | 隆浪快递 | longlangkuaidi | 一邦速递 | yibangwuliu |
DHL-国际件 | dhlen | M开头 | 优速物流 | youshuwuliu | |
DHL-德国件 | dhlde | 门对门 | menduimen | 源伟丰快递 | yuanweifeng |
D速快递 | dsukuaidi | 美国快递 | meiguokuaidi | 元智捷诚 | yuanzhijiecheng |
递四方 | disifang | 明亮物流 | mingliangwuliu | 越丰物流 | yuefengwuliu |
E开头 | O开头 | 源安达 | yuananda | ||
EMS | ems | OCS | ocs | 原飞航 | yuanfeihangwuliu |
EMS-国际件 | emsen | onTrac | ontrac | 一统飞鸿 | yitongfeihong |
E邮宝 | ems | Q开头 | Z开头 | ||
F开头 | 全晨快递 | quanchenkuaidi | 忠信达快递 | zhongxinda | |
Fedex-国际件 | fedex | 全际通 | quanjitong | 芝麻开门 | zhimakaimen |
Fedex-中国件 | fedexcn | 全日通 | quanritongkuaidi | 银捷速递 | yinjiesudi |
Fedex-美国件 | fedexus | 全一快递 | quanyikuaidi | 宅急送 | zhaijisong |
飞康达物流 | feikangda | 全峰快递 | quanfengkuaidi | 郑州建华 | zhengzhoujianhua |
飞快达 | feikuaida | 七天连锁 | sevendays | 中国东方 | coe |
凡客如风达 | rufengda | R开头 | 中通速递 | zhongtong | |
风行天下 | fengxingtianxia | 如风达快递 | rufengda | 中铁物流 | zhongtiewuliu |
飞豹快递 | feibaokuaidi | S开头 | 中铁快运 | ztky | |
G开头 | 山东海红 | haihongwangsong | 中邮物流 | zhongyouwuliu | |
港中能达 | ganzhongnengda | 申通快递 | shentong | 中速快件 | zhongsukuaidi |
国通快递 | guotongkuaidi | 顺丰速递 | shunfeng | 中天万运 | zhongtianwanyun |
广东邮政 | guangdongyouzhengwuliu | 顺丰速递-国际 | shunfengen | ||
挂号信 | youzhengguonei | 三态速递 | santaisudi | ||
国内邮件 | youzhengguonei | 速尔物流 | suer | ||
国际邮件 | youzhengguoji | 盛辉物流 | shenghuiwuliu | ||
GLS | gls | 盛丰物流 | shengfengwuliu | ||
共速达 | gongsuda | 上大物流 | shangda | ||
H开头 | 赛澳递 | saiaodi | |||
汇通快运 | huitongkuaidi | 山西红马甲 | sxhongmajia | ||
汇强快递 | huiqiangkuaidi | 圣安物流 | shenganwuliu | ||
华宇物流 | tiandihuayu | 穗佳物流 | suijiawuliu | ||
恒路物流 | hengluwuliu | T开头 | |||
华夏龙 | huaxialongwuliu | 天地华宇 | tiandihuayu | ||
海航天天 | tiantian | 天天快递 | tiantian | ||
海外环球 | haiwaihuanqiu | TNT | tnt | ||
河北建华 | hebeijianhua | TNT-国际 | tnten | ||
海盟速递 | haimengsudi | 通和天下 | tonghetianxia | ||
华企快运 | huaqikuaiyun | U开头 | |||
J开头 | UPS | ups | |||
加拿大邮政 | canpost | UPS-国际 | upsen | ||
加拿大邮政 | canpostfr | USPS | usps | ||
佳吉物流 | jiajiwuliu | 优速物流 | youshuwuliu | ||
佳怡物流 | jiayiwuliu | W开头 | |||
加运美 | jiayunmeiwuliu | 万家物流 | wanjiawuliu | ||
京广速递 | inguangsudikuaijian | 万象物流 | wanxiangwuliu |