原文地址 https://blog.csdn.net/memory_qianxiao/article/details/81944732直接帖代码,不懂的看原文,只是注意下url地址更新了,原来那个地址好像访问不了,然后加上了时间输入
#-*- coding:utf-8 -*-
import requests,re,datetime,time,json,datetime
from tkinter import*
from tkinter import messagebox
from prettytable import PrettyTable
#这个库是自己写的,把所有车站提取出来的.py文件,我也会放在下面。
from stationsInfo import station_codes,station_names
from colorama import init,Fore,Back,Style
def getHtmltext(url,headers):r=requests.get(url,headers=headers)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.text
init(autoreset=False)
class Colored(object):#  前景色:红色  背景色:默认def red(self, s):return Fore.LIGHTRED_EX + s + Fore.RESET#  前景色:绿色  背景色:默认def green(self, s):return Fore.LIGHTGREEN_EX + s + Fore.RESETdef yellow(self, s):return Fore.LIGHTYELLOW_EX + s + Fore.RESETdef white(self,s):return Fore.LIGHTWHITE_EX + s + Fore.RESETdef blue(self,s):return Fore.LIGHTBLUE_EX + s + Fore.RESET
def showTicket(html):html=json.loads(html)table=PrettyTable(["车次","出发/到达车站","出发/到达时间","历时","商务座","一等座","二等座","高级软卧","软卧","动卧","硬卧","软座","硬座","无座","其他","备注"])for i in html['data']['result']:name = ["station_train_code","from_station_name",'start_time',"lishi","swz_num","zy_num","ze_num","gr_num","rw_num","dw_num","yw_num","rz_num","yz_num","wz_num","qt_num","note_num"]data={"station_train_code": '',"from_station_name": '',"to_station_name": '','start_time': '','end': '',"lishi": '',"swz_num": '',"zy_num": '',"ze_num": '',"dw_num": '',"gr_num": '',"rw_num": '',"yw_num": '',"rz_num": '',"yz_num": '',"wz_num": '',"qt_num": '',"note_num": ''}item = i.split('|')#用"|"进行分割data['station_train_code'] = item[3]#车次在3号位置data['from_station_name'] = item[6]#始发站信息在6号位置data['to_station_name'] = item[7]#终点站信息在7号位置data['start_time'] = item[8]#出发时间信息在8号位置data['arrive_time'] = item[9]#抵达时间在9号位置data['lishi'] = item[10]#经历时间在10号位置data['swz_num'] = item[32] or item[25]# 特别注意:商务座在32或25位置data['zy_num'] = item[31]#一等座信息在31号位置data['ze_num'] = item[30]#二等座信息在30号位置data['gr_num'] = item[21]#高级软卧信息在31号位置data['rw_num'] = item[23]#软卧信息在23号位置data['dw_num'] = item[27]#动卧信息在27号位置data['yw_num'] = item[28]#硬卧信息在28号位置data['rz_num'] = item[24]#软座信息在24号位置data['yz_num'] = item[29]#硬座信息在29号位置data['wz_num'] = item[26]#无座信息在26号位置data['qt_num'] = item[22]#其他信息在22号位置data['note_num'] = item[1]#备注在1号位置color = Colored()#创建Colored对象data["note_num"]=color.blue(item[1])#如果没有信息用'-'代替for pos in name:if data[pos]=='':data[pos]='-'tickets=[]cont=[]cont.append(data)for x in cont:tmp = []for y in name:if y == "from_station_name":s = color.green(station_names[data['from_station_name']])+ '\n' +color.red(station_names[data["to_station_name"]])tmp.append(s)elif y == "start_time":s = color.green(data['start_time']) + '\n' + color.red(data["arrive_time"])tmp.append(s)elif y == "station_train_code":s = color.yellow(data['station_train_code'])tmp.append(s)else:tmp.append(data[y])tickets.append(tmp)for ticket in tickets:table.add_row(ticket)print(table)
def main():from_station=station_codes[input("请输入起始站:\n")]to_station=station_codes[input("请输入目地站:\n")]dates = input("请输入日期:\n")timeArray = time.strptime(dates,"%Y-%m-%d")dta = time.strftime("%Y-%m-%d", timeArray)url="https://kyfw.12306.cn/otn/leftTicket/queryZ?"headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5702.400 QQBrowser/10.2.1893.400"}#time=entry_time.get()#start=entry_start.get()#end=entry_end.get()shurl=url+'leftTicketDTO.train_date='+dta+'&leftTicketDTO.from_station='+from_station+'&leftTicketDTO.to_station='+to_station+'&purpose_codes=ADULT'print(url)html=getHtmltext(url,headers)showTicket(html)
main()
stationsInfo 代码#-*- coding:utf-8 -*-
import re, requestsurl = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8971'
response = requests.get(url, verify=False)
stations = re.findall(r'([\u4e00-\u9fa5]+)\|([A-Z]+)', response.text)
station_codes = dict(stations)
station_names = dict(zip(station_codes.values(), station_codes.keys()))

python 3 12306余票查询脚本相关推荐

  1. Python之12306余票查询

    简单的Python学习,用Python完成一个12306余票查询- Python之12306余票查询 参考资料来自Python 实现火车票查询工具 需要用到的第三方库 requests,使用 Pyth ...

  2. 最新Python实现12306余票查询系统

    首先感谢这篇博客的引导,但是这篇文章已经比较旧了,12306进行了改版,源码编排方式有了变化.12306源码获取的方法可以从这篇博客中学习,我在这里主要贴出对于目前最新的12306的Python余票查 ...

  3. python实现12306余票

    今天就和大家一起来讨论一下python实现12306余票查询(pycharm+python3.7),一起来感受一下python爬虫的简单实践 我们说先在浏览器中打开开发者工具(F12),尝试一次余票的 ...

  4. 火车票查询系统(一)——利用python实现监控12306余票查询

    最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查 ...

  5. 12306 余票查询API浅探索

    12306 余票查询API浅探索 余票查询请求分析 响应数据解密代码查找调试 数据说明 余票查询请求分析 点击查询,F12进入控制台,进入NetWork面板,查看发送的请求: 点入请求查看详情,很明显 ...

  6. 返乡之路不容易之12306余票查询并给出备选方案v2

    在第一版的返乡之路不容易之12306余票查询并给出备选方案中,给出了余票查询和备选方案推荐,但当时有两个问题: 没有备选排名:虽然给出了备选,但哪个备选好没有给出排序 没有座位信息(商务/一等/二等/ ...

  7. python查询12306余票_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  8. 12306余票查询(爬虫)

    经常因为忙而忘记给妹子订票. 每次结果不言而喻. 登个12306查下余票其实很简单,但不知道为什么就是不想登. 所以弄了个爬虫脚本直接查询余票.希望下个女票不会这样尴尬,哈哈哈哈哈哈 12306首页为 ...

  9. 铁路局12306余票查询的实现

    离上次写的类似于铁道部12306城市选择框的实现过了都快一个月了,最近一直在忙,在学习sharepoint2013,虽然早就实现了12306的余票查询,但是一直没抽出时间来写,刚好这几天也快放假了,抽 ...

  10. 使用c#中的HttpWebRequest实现12306余票查询

    准备工作 下载用于解析JSON的类库(Newtonsoft.Json.dll)(下载地址:Newtonsoft.Json.dll): 在C#项目中添加对其的引用. 在程序中导入命名空间: 1 2 3 ...

最新文章

  1. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)
  2. 依赖倒转原则(Dependency Inversion Principle,DIP)
  3. hibernate之关联关系(一对多)
  4. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]
  5. 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
  6. Silverlight C# 游戏开发:Flyer09扇动翅膀的蝴蝶
  7. Struts2学习---基本配置,action,动态方法调用,action接收参数
  8. 历年高考报考人数和录取人数
  9. Qt|C/C++植物大战僵尸修改器(用户版)
  10. 大一C语言和线性代数,有谁学过线性代数和C语言啊?
  11. Maven依赖junit @Test报错解决
  12. emacs 安装指引
  13. ceph搭建_【实战演练】基于各种存储模拟器与软件存储的存储实验07-Ceph分布式存储的3种存储类型使用方法...
  14. 文泉驿正黑 font JAVA,字体 | 免费可商用字体~文泉驿正黑体
  15. .net 2.0安装包打不开_腾讯悄悄发布 Linux QQ,版本 2.0 Beta
  16. Clearcase no version selected issue
  17. 任意7个数字,选出5个进行组合排列,并使用Excel打印组合的所有情况。
  18. C语言条件运算符(?:)的使用
  19. 机器人开发--机器人资料汇总
  20. OpenGL实现在三维空间拖拽物体

热门文章

  1. SEO入门到精通只需学会这10个关键技巧
  2. 金耀初教授:进化计算在人工智能领域的发展
  3. 优秀测试工程师应该具有的基本素质
  4. 季琦:VC青睐的“攻城略地者”
  5. C语言练习之打印9*9乘法口诀表
  6. 城市大脑从起源到终极状态的7个阶段
  7. Pigeon发布流程
  8. 数据基础-索引和完整性(约束)
  9. 搜索关键字拼音智能提示实现
  10. JPA中@Basic注解详解