我的快递一个月没动静于是赶紧上线python快递查询系统

作者:顾木子吖 时间:2021-04-06 23:49:01 

导语

我的快递一个月没动静于是赶紧上线python快递查询系统

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

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

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

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

我的快递一个月没动静于是赶紧上线python快递查询系统

果然,emmmmmm,“打扰了!!”不知道你们遇到过没??

后来小编在一个专门全国查询快递的网站找到了物流信息23333,感觉这还是蛮实用的,至少快递也没丢撒!

今天的话木木子带大家写一款有界面的专属快递物流查询小系统~再也不用担心自己的快递突然消失啦!

我的快递一个月没动静于是赶紧上线python快递查询系统

环境安装:

安装包-Python3、Pycharm2021、模块-requests、pyqt5。


pip  install requests
pip  install  pyqt5       #当然镜像源更快安装,环境问题直接找我

(1)首先导入所有快递公司的信息,这是以快递100为例的哈,之前爬的数据。


companies = pickle.load(open('companies.pkl', 'rb'))

(2)利用快递100查询快递。

我的快递一个月没动静于是赶紧上线python快递查询系统


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])

效果如下:

我的快递一个月没动静于是赶紧上线python快递查询系统

我的快递一个月没动静于是赶紧上线python快递查询系统

附源码:


'''
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_())

来源:https://blog.csdn.net/weixin_55822277/article/details/120238151

标签:python,快递查询,快递跟踪
0
投稿

猜你喜欢

  • RHEL下架设MYSQL集群

    2008-12-24 16:05:00
  • MySQL 数据(字段)类型

    2011-09-10 16:15:56
  • asp截取字符串的两种应用

    2009-08-19 17:11:00
  • 某年第一周开始日期sql实现方法

    2012-02-25 20:02:30
  • asp如何做一个随机密码产生器?

    2010-07-12 18:57:00
  • Python 面向对象 成员的访问约束

    2021-05-16 20:55:53
  • Python序列化模块JSON与Pickle

    2022-11-06 00:24:37
  • 对python使用telnet实现弱密码登录的方法详解

    2023-12-28 02:52:46
  • css把超出的部分显示为省略号的方法兼容火狐

    2010-10-07 09:02:44
  • python实现的简单窗口倒计时界面实例

    2023-06-18 23:02:55
  • python发送邮件脚本

    2022-01-28 03:04:58
  • asp中如何对ip段进行过滤限制

    2007-09-17 11:14:00
  • SQL SERVER 建立索引

    2010-07-02 21:01:00
  • Python超简单容易上手的画图工具库(适合新手)

    2021-12-06 04:05:23
  • 定位后无法选择容器内容解决方案

    2008-07-28 13:14:00
  • Python定时执行之Timer用法示例

    2021-09-14 21:46:01
  • ASP与MySQL的连接[图文教程]

    2010-03-14 11:21:00
  • Django Python 获取请求头信息Content-Range的方法

    2022-09-09 07:04:53
  • Django 拆分model和view的实现方法

    2022-03-28 02:35:34
  • python爬虫神器Pyppeteer入门及使用

    2022-07-05 08:09:16
  • asp之家 网络编程 m.aspxhome.com