我的快遞一個月沒動靜于是趕緊上線python快遞查詢系統(tǒng)
導(dǎo)語
隨著網(wǎng)購的廣泛普及,現(xiàn)在大部分年輕人都喜歡上了網(wǎng)購的方式。
很多東西物美價(jià)廉,出不出戶也能滿足你的購買需求!
尤其是中秋來臨,哪些假期短回不了家的也想給家人帶點(diǎn)兒中秋禮物~
這不?趕上中秋了,之前給家里寄東西的時候就出現(xiàn)過幾次,物流信息一直沒更新,不清楚東西到哪兒了,問賣家:說有時候上面沒更新,但是到你家樓下了會打電話讓你取快遞的~
果然,emmmmmm,“打擾了?。 辈恢滥銈冇龅竭^沒??
后來小編在一個專門全國查詢快遞的網(wǎng)站找到了物流信息23333,感覺這還是蠻實(shí)用的,至少快遞也沒丟撒!
今天的話木木子帶大家寫一款有界面的專屬快遞物流查詢小系統(tǒng)~再也不用擔(dān)心自己的快遞突然消失啦!
正文
環(huán)境安裝:
安裝包-Python3、Pycharm2021、模塊-requests、pyqt5。
pip install requests pip install pyqt5 #當(dāng)然鏡像源更快安裝,環(huán)境問題直接找我
(1)首先導(dǎo)入所有快遞公司的信息,這是以快遞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進(jìn)度:\n' + each['context'] + '\n' + '-' * 60 + '\n' else: info += '時間:\n' + each['time'] + '\n進(jì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 * '''導(dǎo)入所有快遞公司信息''' 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進(jìn)度:\n' + each['context'] + '\n' + '-' * 60 + '\n' else: info += '時間:\n' + each['time'] + '\n進(jì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】因?yàn)槊魈熘芴煨菹⒀?!仰天長嘯!
到此這篇關(guān)于我的快遞一個月沒動靜于是趕緊上線python快遞查詢系統(tǒng)的文章就介紹到這了,更多相關(guān)python 快遞查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁數(shù)據(jù)
這篇文章主要為大家介紹了Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2023-05-05Pytorch的mean和std調(diào)查實(shí)例
今天小編就為大家分享一篇Pytorch的mean和std調(diào)查實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python Numpy中數(shù)據(jù)的常用保存與讀取方法
這篇文章主要介紹了Python Numpy中數(shù)據(jù)的常用保存與讀取方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04flask 實(shí)現(xiàn)上傳圖片并縮放作為頭像的例子
今天小編就為大家分享一篇flask 實(shí)現(xiàn)上傳圖片并縮放作為頭像的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法
下面小編就為大家分享一篇numpy中實(shí)現(xiàn)ndarray數(shù)組返回符合特定條件的索引方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python如何為被裝飾的函數(shù)保留元數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了python如何為被裝飾的函數(shù)保留元數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03python對文件目錄的操作方法實(shí)例總結(jié)
這篇文章主要介紹了python對文件目錄的操作方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對文件目錄相關(guān)的遍歷、刪除、移動、查找等操作技巧,需要的朋友可以參考下2019-06-06