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 查询高铁或者动车票相关推荐

  1. 无身份证、无证件、驾驶证可以领火车票高铁票动车票吗?临时身份证领票

    办理临时身份证是免费的,需要一张照片(自备或者公安值班室旁边自助拍照--好像15元) 问:在网上购买火车票,身份证没有带,如何取票.可以用驾驶证领取吗?. 答:不能使用驾驶证领票,只能办理临时身份证, ...

  2. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法

    C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...

  3. 高铁、动车到底啥区别?看完彻底懂了

    高铁与动车的区别到底在哪里?磁悬浮列车又是什么鬼?今天给你讲讲清楚! 高铁与动车的区别 一.普通列车与高铁钢轨的区别 1.普通铁路的钢轨 几十米就有个接口,火车行驶总是离不开"哐当哐当&qu ...

  4. 高铁、动车到底啥区别?看完彻底懂了(组图)

    摘自:网易新闻 (原标题:高铁.动车到底啥区别?看完彻底懂了(组图)) 高铁与动车的区别到底在哪里?磁悬浮列车又是什么鬼?今天给你讲讲清楚! 高铁.动车到底啥区别?看完彻底懂了 一.普通列车与高铁钢轨 ...

  5. 帮忙抢高铁票的代码用Python写一个

    好的,我会用中文回答你的问题. 首先,在写代码之前,你需要先了解高铁票的购买流程和购买限制,并且要搜集好相关的信息,例如车次.出发地.目的地.日期.座位类型等. 然后,你需要使用 Python 的网络 ...

  6. 坐了怎么久,傻傻分不清动车和高铁,有哪些区别呢?

    生活水平的提高,相对于火车出行,更多人会选择乘坐高铁.动车,耗时短而且环境也比较好,相对于飞机价格更能够让人接受. 这里就有一个疑问?做了这么久的车,是高铁还是动车你知道嘛?两者具体有什么区别呢?你知 ...

  7. 动车和高铁的区别——最详细的技术贴

    动车与高铁的概念解析 [ 转自铁血社区 http://bbs.tiexue.net/ ] 严格意义上,动车是列车车型,高铁是铁路线路类型 动车组指的是列车的类型.它是中国独有的叫法,区别于以前的普通列 ...

  8. python刷火车票脚本_使用python脚本实现查询火车票工具

    使用python脚本实现查询火车票信息的效果图如下: 实现的代码: # coding: utf-8 """命令行火车票查看器 Usage: tickets [-gdtkz ...

  9. Python实现火车票查询小工具

        这个小工具通过抓取12306网站提供的数据并进行解析,从而实现通过命令行的方式查询火车票余票数的功能.主要运用了docopt,requests,prettytable,colorama的库函数 ...

最新文章

  1. CVPR2021满分论文 | GeoSim: Camera Simulation
  2. iPhone遭遇最强烈的黑客攻击:密码、位置、联系人,敏感数据都泄露,谷歌发现的...
  3. android popupwindow dialog区别,Android PopUpWindow使用详解
  4. 自动化测试报告 html模板,PyTestReport 自动化测试报告框架
  5. 关于核定区域电网2018—2019年输电价格的通知
  6. boost::range模块heap算法相关的测试程序
  7. springboot的登录拦截机制
  8. namenode的元数据会被删除吗_从链表中删除数据的时间复杂度真的是O(1)吗?
  9. 排序算法-桶排序(入门级别)
  10. 【交通流预测】基于matlab BP神经网络短时交通流预测【含Matlab源码 687期】
  11. java fx choicebox_JavaFX使用ChoiceBox、ComboBox实现下拉列表
  12. 系统集成项目管理工程师10大管理5个过程组47个过程域
  13. 根据网络画板(画线)分析一下思路
  14. Python生成汉字字库文字,以及转换为文字图片
  15. mysql查询bom清单_Oracle EBS-SQL (BOM-12):BOM清单查询
  16. JavaEE学习第一天(HTML、CSS、js)
  17. ROS节点无法读入launch参数问题
  18. LaTex第一篇:军事理论论文
  19. 软件测试报告应该注意哪些事项
  20. sql多表查询,嵌套查询,函数查询

热门文章

  1. python 圆形的词云
  2. 什么是Oracle数据库?
  3. EPro-PnP:用于单目物体姿态估计的广义端到端概率 PnP(CVPR 2022)
  4. 安装erlang/otp和rebar3时遇到的一些问题和自己的见解
  5. 比较靠谱的程序员工资标准
  6. 二叉树进阶--二叉搜索树
  7. miui11稳定版获取完整root_小米8miui11稳定版下载-小米8miui11稳定版root安装包下载-刷机助手...
  8. GAMES101作业6-BVH完成全过程
  9. 三相异步电动机的定子电动势
  10. 关于PL-2303HX驱动问题