我的快遞一個月沒動靜于是趕緊上線python快遞查詢系統(tǒng)
導語
隨著網(wǎng)購的廣泛普及,現(xiàn)在大部分年輕人都喜歡上了網(wǎng)購的方式。
很多東西物美價廉,出不出戶也能滿足你的購買需求!
尤其是中秋來臨,哪些假期短回不了家的也想給家人帶點兒中秋禮物~
這不?趕上中秋了,之前給家里寄東西的時候就出現(xiàn)過幾次,物流信息一直沒更新,不清楚東西到哪兒了,問賣家:說有時候上面沒更新,但是到你家樓下了會打電話讓你取快遞的~
果然,emmmmmm,“打擾了!!”不知道你們遇到過沒??
后來小編在一個專門全國查詢快遞的網(wǎng)站找到了物流信息23333,感覺這還是蠻實用的,至少快遞也沒丟撒!
今天的話木木子帶大家寫一款有界面的專屬快遞物流查詢小系統(tǒng)~再也不用擔心自己的快遞突然消失啦!
正文
環(huán)境安裝:
安裝包-Python3、Pycharm2021、模塊-requests、pyqt5。
pip install requests pip install pyqt5 #當然鏡像源更快安裝,環(huán)境問題直接找我
(1)首先導入所有快遞公司的信息,這是以快遞100為例的哈,之前爬的數(shù)據(jù)。
companies = pickle.load(open('companies.pkl', 'rb'))
(2)利用快遞100查詢快遞。

def getExpressInfo(number):
url = 'http://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=%s' % number
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'Host': 'www.kuaidi100.com'
}
infos = []
for each in requests.get(url, headers=headers).json()['auto']:
company_name = each['comCode']
url = 'http://www.kuaidi100.com/query?type=%s&postid=%s' % (company_name, number)
temps = requests.get(url, headers=headers).json()['data']
info = '公司: %s\n' % py2hz(company_name)
for idx, each in enumerate(temps):
if idx == 0:
info += '-' * 60 + '\n時間:\n' + each['time'] + '\n進度:\n' + each['context'] + '\n' + '-' * 60 + '\n'
else:
info += '時間:\n' + each['time'] + '\n進度:\n' + each['context'] + '\n' + '-' * 60 + '\n'
if not temps:
info += '-' * 60 + '\n' + '單號不存在或已過期\n' + '-' * 60 + '\n'
infos.append(info)
return infos
(3)制作快遞查詢系統(tǒng)的界面。
class ExpressGUI(QWidget):
def __init__(self, parent=None):
super(ExpressGUI, self).__init__(parent)
self.setWindowTitle('快遞查詢系統(tǒng)')
self.label1 = QLabel('快遞單號:')
self.line_edit = QLineEdit()
self.label2 = QLabel('查詢結(jié)果:')
self.text = QTextEdit()
self.button = QPushButton()
self.button.setText('查詢')
self.grid = QGridLayout()
self.grid.setSpacing(12)
self.grid.addWidget(self.label1, 1, 0)
self.grid.addWidget(self.line_edit, 1, 1, 1, 39)
self.grid.addWidget(self.button, 1, 40)
self.grid.addWidget(self.label2, 2, 0)
self.grid.addWidget(self.text, 2, 1, 1, 40)
self.setLayout(self.grid)
self.resize(600, 400)
self.button.clicked.connect(self.inquiry)
def inquiry(self):
number = self.line_edit.text()
try:
infos = getExpressInfo(number)
if not infos:
infos = ['-' * 60 + '\n' + '單號不存在或已過期\n' + '-' * 60 + '\n']
except:
infos = ['-' * 60 + '\n' + '快遞單號有誤, 請重新輸入.\n' + '-' * 60 + '\n']
self.text.setText('\n\n\n'.join(infos)[:-1])
效果如下:


附源碼:
'''
Function:
快遞查詢系統(tǒng)
源碼基地:#959755565#
'''
import sys
import pickle
import requests
from PyQt5.QtWidgets import *
'''導入所有快遞公司信息'''
companies = pickle.load(open('companies.pkl', 'rb'))
'''將快遞公司的拼音變?yōu)闈h字'''
def py2hz(py):
return companies.get(py)
'''利用快遞100查詢快遞'''
def getExpressInfo(number):
url = 'http://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=%s' % number
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'Host': 'www.kuaidi100.com'
}
infos = []
for each in requests.get(url, headers=headers).json()['auto']:
company_name = each['comCode']
url = 'http://www.kuaidi100.com/query?type=%s&postid=%s' % (company_name, number)
temps = requests.get(url, headers=headers).json()['data']
info = '公司: %s\n' % py2hz(company_name)
for idx, each in enumerate(temps):
if idx == 0:
info += '-' * 60 + '\n時間:\n' + each['time'] + '\n進度:\n' + each['context'] + '\n' + '-' * 60 + '\n'
else:
info += '時間:\n' + each['time'] + '\n進度:\n' + each['context'] + '\n' + '-' * 60 + '\n'
if not temps:
info += '-' * 60 + '\n' + '單號不存在或已過期\n' + '-' * 60 + '\n'
infos.append(info)
return infos
'''制作簡單的GUI'''
class ExpressGUI(QWidget):
def __init__(self, parent=None):
super(ExpressGUI, self).__init__(parent)
self.setWindowTitle('快遞查詢系統(tǒng)')
self.label1 = QLabel('快遞單號:')
self.line_edit = QLineEdit()
self.label2 = QLabel('查詢結(jié)果:')
self.text = QTextEdit()
self.button = QPushButton()
self.button.setText('查詢')
self.grid = QGridLayout()
self.grid.setSpacing(12)
self.grid.addWidget(self.label1, 1, 0)
self.grid.addWidget(self.line_edit, 1, 1, 1, 39)
self.grid.addWidget(self.button, 1, 40)
self.grid.addWidget(self.label2, 2, 0)
self.grid.addWidget(self.text, 2, 1, 1, 40)
self.setLayout(self.grid)
self.resize(600, 400)
self.button.clicked.connect(self.inquiry)
def inquiry(self):
number = self.line_edit.text()
try:
infos = getExpressInfo(number)
if not infos:
infos = ['-' * 60 + '\n' + '單號不存在或已過期\n' + '-' * 60 + '\n']
except:
infos = ['-' * 60 + '\n' + '快遞單號有誤, 請重新輸入.\n' + '-' * 60 + '\n']
self.text.setText('\n\n\n'.join(infos)[:-1])
'''run'''
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = ExpressGUI()
gui.show()
sys.exit(app.exec_())
總結(jié)
好啦!今天的文就寫到這里!雖然還有一個小時!【開始摸魚.jpg】因為明天周天休息呀!仰天長嘯!
到此這篇關(guān)于我的快遞一個月沒動靜于是趕緊上線python快遞查詢系統(tǒng)的文章就介紹到這了,更多相關(guān)python 快遞查詢內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信