物流信息不更新?难道丢了?Python快递查询系统已上线,爆赞!

本文介绍了如何使用Python和PyQt5构建一个简单的快递查询系统,通过快递100接口获取物流信息。用户只需输入快递单号,系统就能显示快递的公司、时间及进度,确保中秋期间能准确跟踪礼物的送达状态。完整代码和图片资源可私信作者获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语图片

随着网购的广泛普及,现在大部分年轻人都喜欢上了网购的方式。

很多东西物美价廉,出不出户也能满足你的购买需求!

尤其是中秋来临,哪些假期短回不了家的也想给家人带点儿中秋礼物~

这不?赶上中秋了,之前给家里寄东西的时候就出现过几次,物流信息一直没更新,不清楚东西到哪儿了,问卖家:说有时候上面没更新,但是到你家楼下了会打电话让你取快递的~​

果然,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资料 源码基地:#私信小编06#即可免费领取!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值