学习习PYTHON开始,实现了一个火车票查询的小功能,希望能帮大家买到回家的票
# -*- coding: utf-8 -*-
# Python 3.3.3
# PyQt 5.1.1
import sys,time,re,urllib.parse,urllib.request,http.cookiejar,json
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *"""cookie"""
cookie=http.cookiejar.LWPCookieJar()
#cookie.load('f:/cookie.txt',True,True)
chandle=urllib.request.HTTPCookieProcessor(cookie)
"""获取数据"""
def getData(url):
r=urllib.request.Request(url)
opener=urllib.request.build_opener(chandle)
u=opener.open(r)
#chandle.cookiejar.save('f:/cookie.txt',True,True)
data=u.read()
try:
data=data.decode('utf-8')
except:
data=data.decode('gbk','ignore')
return data
def postData(url,data):
data=urllib.parse.urlencode(data);data=bytes(data,'utf-8')
r=urllib.request.Request(url,data)
opener=urllib.request.build_opener(chandle)
u=opener.open(r)
#chandle.cookiejar.save('f:/cookie.txt',True,True)
data=u.read()
try:
data=data.decode('utf-8')
except:
data=data.decode('gbk','ignore')
return data
"""火车票"""
class Ticket:
def init(self,s,e,d):
self.li=[]
cont=getData('https://kyfw.12306.cn/otn/resources/js/framework/station_name.js')
s=re.findall('%s|([^|]+)' % s,cont)[0]
e=re.findall('%s|([^|]+)' % e,cont)[0]
url='https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=0X00&queryDate=%s&from_station=%s&to_station=%s' % (d,s,e)
cont=json.loads(getData(url))["data"]["datas"]
name=[
"station_train_code",
"from_station_name",
"to_station_name",
"lishi",
"swz_num",
"tz_num",
"zy_num",
"ze_num",
"gr_num",
"rw_num",
"yw_num",
"rz_num",
"yz_num",
"wz_num",
"qt_num"
]
for x in cont:
tmp=[]
for y in name:
if y=="from_station_name":
s=x[y]+'n'+x["start_time"]
tmp.append(s)
elif y=="to_station_name":
s=x[y]+'n'+x["arrive_time"]
tmp.append(s)
else:
tmp.append(x[y])
self.li.append(tmp)
"""ui"""
class Dialog(QDialog):
ticket=Ticket()
def __init__(self):
self.resize(750,350)
#布局管理器
self.layout=[QVBoxLayout(self),QHBoxLayout()]
self.layout[1].setContentsMargins(0,0,0,0)
self.layout[1].setSpacing(0)
self.layout[0].setContentsMargins(0,0,0,0)
self.layout[0].setSpacing(0)
self.layout[0].addLayout(self.layout[1])
#按钮
btn=QPushButton("ok")
btn.clicked.connect(self.submit)
#输入选项
label=[QLabel("发站:"),QLabel("到站:"),QLabel("日期:")]
self.line=[QLineEdit(),QLineEdit(),QComboBox()]
y=int(time.strftime("%Y",time.localtime()))
m=int(time.strftime("%m",time.localtime()))
d=int(time.strftime("%d",time.localtime()))
i=0
yy=y
mm=m
dd=d
while i if m in (1,3,5,7,8,10,12):
if d+i>31:
dd=d+i-31
mm=m+1
if mm>12:
yy=y+1
mm=mm-12
else:
dd=d+i
elif m in (4,6,9,11):
if d+i>30:
dd=d+i-30
mm=m+1
if mm>12:
yy=y+1
mm=mm-12
else:
dd=d+i
else:
if (m%400==0) or ((m%4==0) and (m%100!=0)):
if d+i>29:
dd=d+i-29
mm=m+1
if mm>12:
yy=y+1
mm=mm-12
else:
dd=d+i
else:
if d+i>28:
dd=d+i-28
mm=m+1
if mm>12:
yy=y+1
mm=mm-12
else:
dd=d+i
s='%d-%02d-%02d' % (yy,mm,dd)
self.line[2].addItem(s)
i+=1
i=0
while i self.line[i].setMaximumWidth(100)
label[i].setMaximumWidth(50)
label[i].setAlignment(Qt.AlignRight|Qt.AlignVCenter)
self.layout[1].addWidget(label[i],Qt.AlignRight)
self.layout[1].addWidget(self.line[i],Qt.AlignLeft)
i+=1
self.layout[1].addWidget(btn)
#表格
head=['车次','发站','到站','历时','商务座','特等座','一等座','二等座','高级软卧','软卧','硬卧','软座','硬座','无座','其他']
self.table=QTableWidget()
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setColumnCount(15)
self.table.setHorizontalHeaderLabels(head)
self.layout[0].addWidget(self.table)
self.show()
def submit(self):
self.table.clearContents()
s=self.line[0].text()
e=self.line[1].text()
d=self.line[2].currentText()
self.ticket.init(s,e,d)
self.table.setRowCount(len(self.ticket.li))
i=0
for x in self.ticket.li:
j=0
for y in x:
if j==1 or j==2:
item=QLabel(y)
item.setAlignment(Qt.AlignCenter)
self.table.setCellWidget(i,j,item)
else:
item=QTableWidgetItem(y)
item.setTextAlignment(Qt.AlignCenter)
if not re.search('D',y):
item.setForeground(QBrush(Qt.red))
self.table.setItem(i,j,item)
if j>2 or j==0:
self.table.resizeColumnToContents(j)
j+=1
i+=1
if __name__=="__main__":
app=QApplication(sys.argv)
dialog=Dialog()
sys.exit(app.exec_())
上一篇:利用Python实现命令行版的火车票查看器下一篇:Python爬虫beautifulsoup库使用操作教程全解(Python爬虫基础入门) 热门搜索:
2014火车票查询
车票查询
分词实现代码
火车票代金券
相关文章
python实现2014火车票查询代码分享
2021-10-17阅读(8532)评论(0)推荐()学习习PYTHON开始,实现了一个火车票查询的小功能,希望能帮大家买到回家的票
python实现12306火车票查询器
2021-10-17阅读(3526)评论(0)推荐()这篇文章主要介绍了python实现12306火车票查询器,需要的朋友可以参考下
使用python脚本实现查询火车票工具
2021-11-03阅读(7979)评论(0)推荐()这篇文章主要介绍了使用python脚本实现查询火车票工具,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
Python脚本实现12306火车票查询系统
2021-10-17阅读(3394)评论(0)推荐()本文给大家分享我使用python3实现的12306火车票查询系统,小编分步骤给大家介绍的非常详细,感兴趣的朋友一起看看吧
利用Python实现命令行版的火车票查看器
2021-10-17阅读(7485)评论(0)推荐()当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行...
火车票抢票python代码公开揭秘!
2021-10-06阅读(3541)评论(0)推荐()火车票抢票python代码公开揭秘!使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事,感兴趣的小伙伴们可以参考一下
利用Vue.js框架实现火车票查询系统(附源码)
2021-10-11阅读(6732)评论(0)推荐()这篇文章主要介绍了利用Vue.js框架实现火车票查询系统的相关资料,,文中给出了详细的介绍与示例代码,并在文章结尾给出了完整的项目下载,需要的朋友可以参考借鉴,...
取消
提交评论
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。