我的快遞一個月沒動靜於是趕緊上線python快遞查詢系統

導語

圖片

隨著網購的廣泛普及,現在大部分年輕人都喜歡上瞭網購的方式。

很多東西物美價廉,出不出戶也能滿足你的購買需求!

尤其是中秋來臨,哪些假期短回不瞭傢的也想給傢人帶點兒中秋禮物~

這不?趕上中秋瞭,之前給傢裡寄東西的時候就出現過幾次,物流信息一直沒更新,不清楚東西到哪兒瞭,問賣傢:說有時候上面沒更新,但是到你傢樓下瞭會打電話讓你取快遞的~​

果然,emmmmmm,“打擾瞭!!”不知道你們遇到過沒??

後來小編在一個專門全國查詢快遞的網站找到瞭物流信息23333,感覺這還是蠻實用的,至少快遞也沒丟撒!

今天的話木木子帶大傢寫一款有界面的專屬快遞物流查詢小系統~再也不用擔心自己的快遞突然消失啦!

​​​

正文

環境安裝:

安裝包-Python3、Pycharm2021、模塊-requests、pyqt5。

pip  install requests
pip  install  pyqt5       #當然鏡像源更快安裝,環境問題直接找我

(1)首先導入所有快遞公司的信息,這是以快遞100為例的哈,之前爬的數據。

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)制作快遞查詢系統的界面。

class ExpressGUI(QWidget):
	def __init__(self, parent=None):
		super(ExpressGUI, self).__init__(parent)
		self.setWindowTitle('快遞查詢系統')
		self.label1 = QLabel('快遞單號:')
		self.line_edit = QLineEdit()
		self.label2 = QLabel('查詢結果:')
		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:
	快遞查詢系統
源碼基地:#959755565#
'''
import sys
import pickle
import requests
from PyQt5.QtWidgets import *
 
 
'''導入所有快遞公司信息'''
companies = pickle.load(open('companies.pkl', 'rb'))
 
 
'''將快遞公司的拼音變為漢字'''
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('快遞查詢系統')
		self.label1 = QLabel('快遞單號:')
		self.line_edit = QLineEdit()
		self.label2 = QLabel('查詢結果:')
		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_())

總結

好啦!今天的文就寫到這裡!雖然還有一個小時!【開始摸魚.jpg】因為明天周天休息呀!仰天長嘯!

到此這篇關於我的快遞一個月沒動靜於是趕緊上線python快遞查詢系統的文章就介紹到這瞭,更多相關python 快遞查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: