Python requests +PrettyTable 查询高铁或者动车票
1、为什么只查询高铁或者动车,因为我现在基本上不会选择坐K字头的火车了
2、12306网站截取一条查询信息
3、response数据里的result,每一条都对应一次列车信息,返回的数据以“”|“”分割,37条数据
4、随便拿一条解析下,有些对比网站看出来了,有些不知道,但是不影响我们这次的目的
5、第 5 6 7 8 条数据代表的是车站的代码,不知道怎么查,但是网上有对应的 txt文档,拿过来直接读
6、使用prettytable 把数据打印出来,很工整,可以应用在UI测试,表格数据的获取,打印到日志中
7、上代码
#encoding:gbk import requests from prettytable import PrettyTable import time import sysclass checkTickets :def __init__(self):print("Welcome lilin Zone")self.train_date = "" self.from_station = "" self.to_station = "" self.url = "" #加载车站信息 self.stations,self.code_name = self.get_stations_code()def set_train_date(self):curdate = self.get_currtime(2)train_date = input("请输入时间 : ")if train_date == "":print("默认设置查询日期为今日:" + curdate)self.train_date = curdateelif not self.is_valid_date(train_date):print("日期格式输入错误,请按 2018-05-13 格式输入")self.set_train_date()elif train_date < curdate:print("查询时间小于今天,请检查后再输入")self.set_train_date()else:self.train_date = train_datedef set_from_station(self):from_name = input("请输入始发站 : ")try:code = self.stations[from_name]return codeexcept:print("查无此站,请检查后重新输入")self.set_from_station()def set_to_station(self):to_name = input("请输入终点站 : ")try:code = self.stations[to_name]return codeexcept:print("查无此站,请检查后重新输入")self.set_to_station()def get_stations_code(self):f = open("d://stationcode.txt")name_code = dict({})code_name = dict({})lines = f.readlines()for line in lines:station = line.split(":")name_code[station[0]] = station[1].replace("\n", "")code_name[station[1].replace("\n", "")] = station[0]f.close()return name_code,code_namedef get_currtime(self,type = 1):if type == 1:return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())elif type == 2:return time.strftime("%Y-%m-%d", time.localtime())def is_valid_date(self,strdate):'''''判断是否是一个有效的日期字符串''' try:if ":" in strdate:time.strptime(strdate, "%Y-%m-%d %H:%M:%S")else:time.strptime(strdate, "%Y-%m-%d")return True except:return False def set_urlInfo(self):self.set_train_date()from_station_code = self.set_from_station()to_station_code = self.set_to_station()self.url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date="+self.train_date+"&leftTicketDTO.from_station="+from_station_code+"&leftTicketDTO.to_station="+to_station_code+"&purpose_codes=ADULT" def show_ticketInfo(self):r = requests.get(self.url)#返回的数据 try:response = r.json()except:print("查询出现异常,再次查询")self.show_ticketInfo()#列车信息表 a = response["data"]["result"]if len(a) == 0 and r.status_code == 200:print("已经查不到今天高铁动车班次。本次查询结束,谢谢使用")sys.exit()table = PrettyTable()# ["车次","始发站","终点站","出发时间","到达时间","历时","商务座","一等座","二等座","无座"] table.field_names = ["Train Number","From Station","To Station","Starting Time","Ending Time","Duration Time","Business Class","First Class","Second Class","No Seat"]table.align = 'l' for t_info in a:info = t_info.split("|")t_name = info[3]t_type = t_name[0:1]if t_type == "G" or t_type == "D":table.add_row([info[3],self.code_name[info[6]],self.code_name[info[7]],info[8],info[9],info[10],info[32],info[31],info[30],info[26]])print(table)if __name__ == "__main__":c = checkTickets()c.set_urlInfo()c.show_ticketInfo()
Python requests +PrettyTable 查询高铁或者动车票相关推荐
- 无身份证、无证件、驾驶证可以领火车票高铁票动车票吗?临时身份证领票
办理临时身份证是免费的,需要一张照片(自备或者公安值班室旁边自助拍照--好像15元) 问:在网上购买火车票,身份证没有带,如何取票.可以用驾驶证领取吗?. 答:不能使用驾驶证领票,只能办理临时身份证, ...
- C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法
C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...
- 高铁、动车到底啥区别?看完彻底懂了
高铁与动车的区别到底在哪里?磁悬浮列车又是什么鬼?今天给你讲讲清楚! 高铁与动车的区别 一.普通列车与高铁钢轨的区别 1.普通铁路的钢轨 几十米就有个接口,火车行驶总是离不开"哐当哐当&qu ...
- 高铁、动车到底啥区别?看完彻底懂了(组图)
摘自:网易新闻 (原标题:高铁.动车到底啥区别?看完彻底懂了(组图)) 高铁与动车的区别到底在哪里?磁悬浮列车又是什么鬼?今天给你讲讲清楚! 高铁.动车到底啥区别?看完彻底懂了 一.普通列车与高铁钢轨 ...
- 帮忙抢高铁票的代码用Python写一个
好的,我会用中文回答你的问题. 首先,在写代码之前,你需要先了解高铁票的购买流程和购买限制,并且要搜集好相关的信息,例如车次.出发地.目的地.日期.座位类型等. 然后,你需要使用 Python 的网络 ...
- 坐了怎么久,傻傻分不清动车和高铁,有哪些区别呢?
生活水平的提高,相对于火车出行,更多人会选择乘坐高铁.动车,耗时短而且环境也比较好,相对于飞机价格更能够让人接受. 这里就有一个疑问?做了这么久的车,是高铁还是动车你知道嘛?两者具体有什么区别呢?你知 ...
- 动车和高铁的区别——最详细的技术贴
动车与高铁的概念解析 [ 转自铁血社区 http://bbs.tiexue.net/ ] 严格意义上,动车是列车车型,高铁是铁路线路类型 动车组指的是列车的类型.它是中国独有的叫法,区别于以前的普通列 ...
- python刷火车票脚本_使用python脚本实现查询火车票工具
使用python脚本实现查询火车票信息的效果图如下: 实现的代码: # coding: utf-8 """命令行火车票查看器 Usage: tickets [-gdtkz ...
- Python实现火车票查询小工具
这个小工具通过抓取12306网站提供的数据并进行解析,从而实现通过命令行的方式查询火车票余票数的功能.主要运用了docopt,requests,prettytable,colorama的库函数 ...
最新文章
- CVPR2021满分论文 | GeoSim: Camera Simulation
- iPhone遭遇最强烈的黑客攻击:密码、位置、联系人,敏感数据都泄露,谷歌发现的...
- android popupwindow dialog区别,Android PopUpWindow使用详解
- 自动化测试报告 html模板,PyTestReport 自动化测试报告框架
- 关于核定区域电网2018—2019年输电价格的通知
- boost::range模块heap算法相关的测试程序
- springboot的登录拦截机制
- namenode的元数据会被删除吗_从链表中删除数据的时间复杂度真的是O(1)吗?
- 排序算法-桶排序(入门级别)
- 【交通流预测】基于matlab BP神经网络短时交通流预测【含Matlab源码 687期】
- java fx choicebox_JavaFX使用ChoiceBox、ComboBox实现下拉列表
- 系统集成项目管理工程师10大管理5个过程组47个过程域
- 根据网络画板(画线)分析一下思路
- Python生成汉字字库文字,以及转换为文字图片
- mysql查询bom清单_Oracle EBS-SQL (BOM-12):BOM清单查询
- JavaEE学习第一天(HTML、CSS、js)
- ROS节点无法读入launch参数问题
- LaTex第一篇:军事理论论文
- 软件测试报告应该注意哪些事项
- sql多表查询,嵌套查询,函数查询