Python查询快递


首先,要考虑数据来源。这个可以用快递100的数据,打开快递100官网就可以输入单号查询快递信息。

当然,点一下查询按钮,会发送很多请求到服务器,请求快递信息。我们需要分析一下哪个请求链接是有用的。抓包分析可以用fiddler4,这里我就不写这个过程了。大家有兴趣可以去尝试一下,比较简单。

经测试,得到请求链接是 http://www.kuaidi100.com/query?type=xxx&postid=xxx 。其中需要填写type和postid两个参数,分别是快递公司代码和快递单号。请求这个链接可以得到json数据。大概结构如下:

  1. {
  2.     "message" : "ok",
  3.     "nu" : "单号",
  4.     "com" : "快递公司代码",
  5.     "data":[
  6.         {
  7.              "time":"2015-12-27 13:24:34",
  8.              "context":"快递信息1",
  9.              "ftime":"2015-12-27 13:24:34"
  10.          },
  11.         {
  12.              "time":"2015-12-27 13:24:34",
  13.              "context":"快递信息2",
  14.              "ftime":"2015-12-27 13:24:34"
  15.          }
  16.         ]
  17. }


这个json数据结构还是一目了然的那我们就可以动手了,源码如下:

  1. # -*- coding: UTF-8 -*-
  2. # 特别声明,此源码仅参考研究使用。未经允许,请勿用于商业用途
  3. # By Haddy Yang, 2016-03-02
  4.  
  5. import urllib
  6. import json
  7.  
  8. def getExpress(company,code):
  9.     '''funcation: Get Express Infomation
  10.     2 args
  11.     company: the express company code
  12.     code: the express bill code
  13.     '''
  14.     url='http://www.kuaidi100.com/query?type=%s&postid=%s' % (company,code)
  15.     page=urllib.urlopen(url) #打开链接,请求快递数据
  16.     return page.read().decode('utf8')
  17.  
  18. def showResult(jsonStr):
  19.     '''Show the result'''
  20.     jsonObj = json.loads(jsonStr)
  21.     print u'当前状态:', jsonObj.get('message'),'\n'
  22.  
  23.     status=jsonObj.get('status') #获取状态代码(200是正常)
  24.     if status=='200':
  25.         for x in jsonObj.get('data'):
  26.             print '%s %s' % (x.get('time'), x.get('context'))
  27.             #可以用下面代码遍历出全面键值
  28.             #for key,value in x.items():
  29.             #   print key,value
  30.  
  31. if __name__ == '__main__':
  32.     #测试,顺丰代码:shunfeng
  33.     jsonStr = getExpress('shunfeng','102290224058')
  34.     showResult(jsonStr)
  35.     raw_input()

快递公司名称            代码            快递公司名称            代码            快递公司名称            代码            
A开头
           
急先达jixianda微特派weitepai
澳大利亚邮政auspost晋越快递jinyuekuaidiX开头
           
AAEaae捷特快递jietekuaidi新邦物流xinbangwuliu
安信达anxindakuaixi金大物流jindawuliu信丰物流xinfengwuliu
B开头            嘉里大通jialidatong星晨急便xingchengjibian
百世汇通huitongkuaidiK开头
           
鑫飞鸿xinhongyukuaidi
百福东方baifudongfang快捷速递kuaijiesudi希伊艾斯cces
BHTbht康力物流kangliwuliu新蛋奥硕物流neweggozzo
包裹/平邮/挂号youzhengguonei跨越物流kuayue香港邮政hkpost
邦送物流bangsongwuliuL开头
           
Y开头
           
C开头
           
联昊通lianhaowuliu圆通速递yuantong
希伊艾斯cces龙邦物流longbanwuliu韵达快运yunda
传喜物流chuanxiwuliu蓝镖快递lanbiaokuaidi运通快递yuntongkuaidi
D开头
           
乐捷递lejiedi邮政小包youzhengguonei
大田物流datianwuliu联邦快递lianbangkuaidi邮政小包youzhengguoji
德邦物流debangwuliu联邦快递lianbangkuaidien远成物流yuanchengwuliu
DPEXdpex立即送lijisong亚风速递yafengsudi
DHL-中国件dhl隆浪快递longlangkuaidi一邦速递yibangwuliu
DHL-国际件dhlenM开头
           
优速物流youshuwuliu
DHL-德国件dhlde门对门menduimen源伟丰快递yuanweifeng
D速快递dsukuaidi美国快递meiguokuaidi元智捷诚yuanzhijiecheng
递四方disifang明亮物流mingliangwuliu越丰物流yuefengwuliu
E开头
           
O开头
           
源安达yuananda
EMSemsOCSocs原飞航yuanfeihangwuliu
EMS-国际件emsenonTracontrac一统飞鸿yitongfeihong
E邮宝emsQ开头
           
Z开头            
F开头
           
全晨快递quanchenkuaidi忠信达快递zhongxinda
Fedex-国际件fedex全际通quanjitong芝麻开门zhimakaimen
Fedex-中国件fedexcn全日通quanritongkuaidi银捷速递yinjiesudi
Fedex-美国件fedexus全一快递quanyikuaidi宅急送zhaijisong
飞康达物流feikangda全峰快递quanfengkuaidi郑州建华zhengzhoujianhua
飞快达feikuaida七天连锁sevendays中国东方coe
凡客如风达rufengdaR开头
           
中通速递zhongtong
风行天下fengxingtianxia如风达快递rufengda中铁物流zhongtiewuliu
飞豹快递feibaokuaidiS开头
           
中铁快运ztky
G开头
           
山东海红haihongwangsong中邮物流zhongyouwuliu
港中能达ganzhongnengda申通快递shentong中速快件zhongsukuaidi
国通快递guotongkuaidi顺丰速递shunfeng中天万运zhongtianwanyun
广东邮政guangdongyouzhengwuliu顺丰速递-国际shunfengen

挂号信youzhengguonei三态速递santaisudi

国内邮件youzhengguonei速尔物流suer

国际邮件youzhengguoji盛辉物流shenghuiwuliu

GLSgls盛丰物流shengfengwuliu

共速达gongsuda上大物流shangda

H开头
           
赛澳递saiaodi

汇通快运huitongkuaidi山西红马甲sxhongmajia

汇强快递huiqiangkuaidi圣安物流shenganwuliu

华宇物流tiandihuayu穗佳物流suijiawuliu

恒路物流hengluwuliuT开头
           


华夏龙huaxialongwuliu天地华宇tiandihuayu

海航天天tiantian天天快递tiantian

海外环球haiwaihuanqiuTNTtnt

河北建华hebeijianhuaTNT-国际tnten

海盟速递haimengsudi通和天下tonghetianxia

华企快运huaqikuaiyunU开头
           


J开头
           
UPSups

加拿大邮政canpostUPS-国际upsen

加拿大邮政canpostfrUSPSusps

佳吉物流jiajiwuliu优速物流youshuwuliu

佳怡物流jiayiwuliuW开头
           


加运美jiayunmeiwuliu万家物流wanjiawuliu

京广速递inguangsudikuaijian万象物流wanxiangwuliu



标签: 无

发表评论:

登陆