全国快递物流查询-快递查询接口-阿里云代码封装

class ExpressQuery:
    # 定义类属性记录单例对象引用
    _instance = None

    # 创建单例
    def __new__(cls):
        # 1. 判断类属性是否已经被赋值
        if cls._instance is None:
            cls._instance = super(ExpressQuery, cls).__new__(cls)
        # 2. 返回类属性的单例引用
        return cls._instance

    def __init__(self):
        self.host = 'https://wuliu.market.alicloudapi.com'  # 阿里云接口url前缀
        # 个人code,获取连接 https://market.console.aliyun.com/imageconsole/index.htm
        # 购买连接 https://market.aliyun.com/products/56928004/cmapi021863.html
        self.app_code = '************2db3f92ba75d32ad02'

    def get_express_list(self):
        # 获取快递type 缩写列表
        path = '/getExpressList'
        query = ''
        url = self.host + path + '?' + query
        new_url = quote(url, safe=string.printable)
        request_list = urllib.request.Request(new_url)
        request_list.add_header('Authorization', 'APPCODE ' + self.app_code)
        ctx = ssl.create_default_context()
        ctx.check_hostname = False
        ctx.verify_mode = ssl.CERT_NONE
        response = urllib.request.urlopen(request_list, context=ctx)
        content_ss = response.read()
        if content_ss:
            data_ss = content_ss.decode('UTF-8')
            print(data_ss)

    def get_express_info(self, express_num, express_name):
        new_type = ""
        for k, v in data_dict.items():
            if v == express_name:
                new_type = k
        if not new_type:
            return 0, {}, "快递公司名称有误!!!"
        path = '/kdi'
        query = 'no=%d&type=%s' % (express_num, new_type)
        url = self.host + path + '?' + query
        new_url = quote(url, safe=string.printable)
        request_urllib = urllib.request.Request(new_url)
        request_urllib.add_header('Authorization', 'APPCODE ' + self.app_code)
        ctx = ssl.create_default_context()
        ctx.check_hostname = False
        ctx.verify_mode = ssl.CERT_NONE
        response = urllib.request.urlopen(request_urllib, context=ctx)
        content = response.read()
        if content:
            data_str = content.decode('UTF-8')
            data_info = eval(data_str)
            if int(data_info["status"]) == 0:
                return 200, data_info["result"], data_info["msg"]
            else:
                return int(data_info["status"]), data_info["result"], data_info["msg"]
        else:
            return 0, {}, "请求失败!!!"

快递type字典

{"AAEWEB": "AAE", "ARAMEX": "Aramex", "DHL": "DHL国内件", "DHL_EN": "DHL国际件", "DPEX": "DPEX",
             "DEXP": "D速", "EMS": "EMS(国内和国际)", "EWE": "EWE", "FEDEX": "FEDEX", "FEDEXIN": "FedEx国际",
             "PCA": "PCA", "TNT": "TNT", "UPS": "UPS", "ANJELEX": "安捷", "ANE": "安能快递", "ANEEX": "安能快递",
             "ANXINDA": "安信达", "EES": "百福东方", "HTKY": "百世快递", "BSKY": "百世快运", "FLYWAYEX": "程光",
             "DTW": "大田", "DEPPON": "德邦快递", "GCE": "飞洋", "PHOENIXEXP": "凤凰", "FTD": "富腾达", "GSD": "共速达",
             "GTO": "国通快递", "BLACKDOG": "黑狗", "HENGLU": "恒路", "HYE": "鸿远", "HQKY": "华企", "JOUST": "急先达",
             "TMS": "加运美", "JIAJI": "佳吉", "JIAYI": "佳怡", "KERRY": "嘉里物流", "HREX": "锦程快递",
             "PEWKEE": "晋越", "JD": "京东快递", "KKE": "京广快递", "JIUYESCM": "九曳供应链", "KYEXPRESS": "跨越",
             "FASTEXPRESS": "快捷", "BLUESKY": "蓝天", "LTS": "联昊通", "LBEX": "龙邦快递", "CAE": "民航",
             "ND56": "能达", "PEISI": "配思航宇", "EFSPOST": "平安快递", "CHINZ56": "秦远物流", "QCKD": "全晨",
             "QFKD": "全峰快递", "APEX": "全一", "RFD": "如风达", "SFC": "三态", "STO": "申通快递", "SFWL": "盛丰",
             "SHENGHUI": "盛辉", "SDEX": "顺达快递", "SFEXPRESS": "顺丰", "SUNING": "苏宁", "SURE": "速尔",
             "HOAU": "天地华宇", "TTKDEX": "天天", "VANGEN": "万庚", "WANJIA": "万家物流", "EWINSHINE": "万象",
             "GZWENJIE": "文捷航空", "XBWL": "新邦", "XFEXPRESS": "信丰", "BROADASIA": "亚风", "YIEXPRESS": "宜送",
             "QEXPRESS": "易达通", "ETD": "易通达", "UC56": "优速快递", "CHINAPOST": "邮政包裹", "YFHEX": "原飞航",
             "YTO": "圆通快递", "YADEX": "源安达", "YCGWL": "远成", "YFEXPRESS": "越丰", "YTEXPRESS": "运通",
             "YUNDA": "韵达快递", "ZJS": "宅急送", "ZMKMEX": "芝麻开门", "COE": "中国东方", "CRE": "中铁快运",
             "ZTKY": "中铁物流", "ZTO": "中通快递", "ZTO56": "中通快运(物流)", "CNPL": "中邮", "YIMIDIDA": "壹米滴答",
             "PJKD": "品俊快递", "RRS": "日日顺物流", "YXWL": "宇鑫物流", "DJ56": "东骏快捷", "AYCA": "澳邮专线",
             "BDT": "八达通", "CITY100": "城市100", "CJKD": "城际快递", "D4PX": "递四方速递", "FKD": "飞康达",
             "GTSD": "广通", "HQSY": "环球速运", "HYLSD": "好来运快递", "JAD": "捷安达", "JTKD": "捷特快递",
             "JGWL": "景光物流", "MB": "民邦快递", "MK": "美快", "MLWL": "明亮物流", "PADTF": "平安达腾飞快递",
             "PANEX": "泛捷快递", "QRT": "全日通快递", "QXT": "全信通", "RFEX": "瑞丰速递", "SAD": "赛澳递",
             "SAWL": "圣安物流", "SDWL": "上大物流", "ST": "速通物流", "STWL": "速腾快递", "SUBIDA": "速必达物流",
             "WJK": "万家康", "XJ": "新杰物流", "ZENY": "增益快递", "ZYWL": "中邮物流", "EUASIA": "欧亚专线",
             "HEMA": "河马动力"}

调用

express = ExpressQuery()
status, data, message = express.get_express_info(780098068058, "申通快递")
a = ExpressQuery()
b = ExpressQuery()
print(id(a))
print(id(b))
print(id(express))
if status == 200:
	print("正常")
else:
	print("失败")
print("status=", status)
print("data=", data)
print("message=", message)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值