用Python快速查詢快遞物流信息
/1 前言/
大家好,歡迎來到 Crossin的編程教室 !
我們經(jīng)常會去查快遞的物流單號,可是這些物流單號是從哪里來的呢?
“快遞100”是一個集合了多家快遞公司查詢接口,輸入相應(yīng)快遞公司編碼和快遞單號就可以獲取到對應(yīng)的物流信息,很方便快捷。我們可以通過它來實(shí)現(xiàn)自己查詢工具。

/2 項(xiàng)目目標(biāo)/
利用Python編程去查詢自己的物流信息。
/3?項(xiàng)目準(zhǔn)備/
軟件:PyCharm
需要的庫:urllib.request、json
網(wǎng)站如下:
https://www.kuaidi100.com/4 項(xiàng)目分析/
一、如何獲取真正的網(wǎng)址,拿到相對應(yīng)的接口?
1、chrome瀏覽器F12檢查,隨便輸入一個快遞單號,點(diǎn)擊查找。如圖:

2、找到請求的接口地址:
https://www.kuaidi100.com/query?type=shentong&postid=773036432685909&temp=0.03191355265516216&phone=3、可以看到postid就是我們的快遞單號,type就是各個快遞公司的名字拼音的簡稱。那等下就可以定義這個字典去存放各個公司名字的簡稱拼接網(wǎng)址。
4、在 Preview 欄目里找到對應(yīng)的 data,可以看到context就是物流信息。等下可以通過js解析獲取對應(yīng)的字段。

/5?項(xiàng)目實(shí)現(xiàn)/
1、定義一個class類繼承object。導(dǎo)入需要的庫和網(wǎng)址。定義一個字典kd_dict存放快遞公司簡稱。
import urllib.requestimport jsonkd_dict = {1: 'shentong', 2: 'youzhengguonei', 3: 'yuantong', 4: 'shunfeng', 5: 'yunda', 6: 'zhongtong'}class YU(object):pass
2、建立查詢框架。
while True:print("輸入要查詢快遞公司:")print("1.申通 2.EMS郵政 3.圓通 4.順風(fēng) 5.韻達(dá) 6.中通 0.退出\n ")choose = int(input("請選擇您的快遞公司:"))while choose not in range(0, 7):choose = int(input("抱歉暫不支持此公司請重新選擇:"))if choose == 0:breakkd_num = input("請輸入快遞單號:")
3、對js文件進(jìn)行解析。
????url?=?"http://www.kuaidi100.com/query?type=%s&postid=%s"?%?(kd_dict[choose],?kd_num)response = urllib.request.urlopen(url)html = response.read().decode('utf-8')target = json.loads(html)
4、判斷status的是不是200,是200才可以正常訪問 ,獲取對應(yīng)的data。
if status == '200':data = target['data']# print(data)data_len = len(data)# print(data_len)# print("\n")
5、for循環(huán)遍歷,獲取對應(yīng)的字段。
for i in range(data_len):print("\n時間: " + data[i]['time'])print("狀態(tài): " + data[i]['context'] + "")print("\n感謝使用!\n")breakelse:print("輸入有誤請重新輸入!\n")
6、程序循環(huán)。
while True:YU.Check()out = input("按任意數(shù)字退出(其他鍵繼續(xù)).........")if out >= '0' and out <= '7':breakelse:print("\n")continue
/6?效果展示/
1、點(diǎn)擊綠色小三角運(yùn)行,之后輸入快遞公司代表的編號。

2、輸入你的快遞單號,之后在控制臺上可以看到顯示結(jié)果,如下圖所示。

/7 小結(jié)/
項(xiàng)目源碼:
https://github.com/cassieeric/python_crawler/blob/master/Kuaidixinxi/Kuaidi.py
_往期文章推薦_
