Oct1a

Python快递信息查询

今天想查个快递,只知道单号,通常直接输入百度就能查到物流信息,这次想用自己代码来查询下,整个程序就用到Json和Requests两个库,调用的是快递100的API

获取快递公司简称

https://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=’+ 快递单号

{
    "comCode": "",
    "num": "1003030947526",
    "auto": [
        {
            "comCode": "ems",
            "id": "",
            "noCount": 947,
            "noPre": "100303",
            "startTime": ""
        }
    ]
}

抓包获取快递物流信息地址,得到JSON数据

https://www.kuaidi100.com/query?type=快递公司简称&postid=快递单号

{
    "message": "ok",
    "nu": "1003030947526",
    "ischeck": "1",
    "condition": "F00",
    "com": "ems",
    "status": "200",
    "state": "3",
    "data": [
        {
            "time": "2017-12-01 13:34:11",
            "ftime": "2017-12-01 13:34:11",
            "context": "[苏州市]投递并签收,签收人:他人收 快递柜",
            "location": null
        },
        {
            "time": "2017-12-01 09:34:41",
            "ftime": "2017-12-01 09:34:41",
            "context": "[苏州市]昆山市花桥邮政速递营业部安排投递,预计23:59:00前投递(投递员姓名:陆晓华;联系电话:18912661298)",
            "location": null
        }
}

完整代码(大概不到十行代码解决)

import json
import requests
Number = input('请输入快递单号:\n')
#查询快递名称
url1= 'https://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text='+ Number
#解析json
express = json.loads(requests.get(url1).text)['auto'][0]['comCode']
#查询快递信息
url2= 'https://www.kuaidi100.com/query?type={}&postid={}'.format(express,Number)
info = json.loads(requests.get(url2).text)['data']
for x in info:
    success = (x['time']+x['context'])
    print(success)

很多网站都可以用api来调用数据,比如车票,快递,豆瓣,网易…

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。