原标题:Python 实现一个火车票查询的工具

作者 sexycoder

本文转载自简书,转载需授权

使用 python 实现一个查询火车票的小工具

主要功能:

输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息

支持输入附加选项查询不同的火车的类型,比如高铁,动车。#查询上海到北京

2017-04-25的高铁和动车的车票,-g -d 是附加选项 表示高铁和动车python3 trains.py -gd 上海 北京

2017-04-25

运行结果:

1. 对12306网站买票过程抓包分析

点击查询之后,通过抓包发现返回了一个json的文件,查看这个文件,就是保存着具体车次的信息。抓包如下图所示。

请求的url 是:

GET /otn/leftTicket/query?leftTicketDTO.train_date=2017-04-20&leftTicketDTO.from_station=TJP&leftTicketDTO.to_station=TYV&purpose_codes=ADULT HTTP/1.1

发现这个请求使用的是get方法,然后传递了四个参数,一个是出发站,一个是到达车站,一个是成年人or学生,最后一个是时间。如下图:

但是有一个问题是,我输入的是天津到太原,但是这个却转换成了拼音的简称。必须要找到这个转换的字典是什么,这样才能正确的使用这个接口。

在网页的源代码找到这个文件,station_name.js 文件,如下图:

js文件的格式是,如下图,使用的话,必须要想用正则表达式处理一下:

2. 使用正则表达式处理这个js文件

使用正则表达式,将js 文件里面的车站名字和对应的简称提取出来,然后写入到一个station.py 文件里面,作为字典,程序运行的时候,将这个文件以模块的形式包含进去。

关于正则表达式,先占一个坑,以后在详细的写。

正则表达式的代码:

运行的时候:

# 将输出重定向到一个新的文件stations.py里面python3test3.py> stations.py

3. 使用docopt 优雅的完成命令行的输入

docopt 是一个很优雅的处理输入的一个模块,docopt可以根据你写的文档描述,可以自动为你生成解析器,可以非常容易的为你的python程序创建命令行界面。

4. 主程序

4.1 处理url

4.2 输出

运行结果:

5. 使用prettytable模块 优雅的输出

详细:

推荐阅读

责任编辑:

python实现火车票查询工具_Python 实现一个火车票查询的工具相关推荐

  1. python火车票查询工具tkinter_Python 实现一个火车票查询的工具

    原标题:Python 实现一个火车票查询的工具 主要功能: 输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息 支持输入附加选项查询不同的火车的类型,比如高铁,动车. #查询上海到北京2 ...

  2. python查天气预报_Python编写一个天气预报查询系统

    Python编写一个天气预报查询系统 学了Python这么久 可以用它来做许多好玩的小程序哦! 这里给 大家做了个查询天气预报的小程序! 可以查询未来几天的天气! 需要大家自己修改下代码即可! 首先我 ...

  3. python抢票软件代码_Python 写一个抢票软件

    总体设计 所谓抢票软件,本质上就是基于浏览器驱动,实现登录.预定.确认信息的自动化.购买列车票涉及4个网页,相应的基本流程如下: 登录:输入用户名.密码,识别验证码,点击"登录": ...

  4. python代码行数统计工具_Python实现代码行数统计工具的功能(实例)

    本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善 ...

  5. 用 Python 的GUI 库 PySimpleGUI,写一个肥胖指数计算工具,Python开发就是这么简单

    Python 的 GUI 库 PySimpleGUI,写一个简单的有界面的小工具很简单!这里我们来写一个计算肥胖指数(BMI)的小工具.首先,通过百度得到 BMI 指数的计算公式为: 体重 / (身高 ...

  6. python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  7. fish工具_Python程序员使用哪些开发工具

    Python程序员使用哪些开发工具?很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效 ...

  8. python作业火车票订购系统_Python实现12306火车票查询系统

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

  9. python table数据抓取_Python爬虫:数据抓取工具及类库详解

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: ncepu_Chen PS:如有需要Python学习资料的小伙伴可以 ...

最新文章

  1. Java项目:后台管理系统脚手架项目(java+SpringBoot+FreeMarker+mysql+JSP)
  2. [译]5步实现Silverlight中的Command
  3. 编程新手真言:不要去干追逐技术的蠢事,你只是用户,只需学会一门工具开发....
  4. C#.NET常见问题(FAQ)-命名空间namespace如何理解
  5. 转:c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
  6. 云炬Qtpy5开发与实战笔记 2PyCharm添加QTDesinger扩展并创建第一个.ui文件
  7. 使用Oracle LogMiner分析archived log
  8. java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
  9. Android学习笔记---HttpClient入门,使用方法,及简介
  10. SQL Server 2008安装和配置图解图(转)
  11. HTTP 长连接 使用场景
  12. NetSetMan IP快速切换
  13. OSChina 周四乱弹 —— 开个程序门诊?
  14. 奇异值分解(SVD)
  15. 英语介词at、in、on常见用法(时间、地点、方位)
  16. CentOS调整LVM分区
  17. 如何查找你的IP地址?通过IP地址能直接定位到你家!
  18. 线性代数拾遗(1)—— 行列式的三种公理化构造
  19. 敏捷开发松结对编程系列:L型代码结构案例StatusFiltersDropdownList(下)
  20. android 自定义view 动画效果,Android自定义view实现阻尼效果的加载动画

热门文章

  1. 电脑常见问题_电脑知识,每日一课,计算机常用维修小技巧
  2. 如何在Mac中卸载openjdk15
  3. jenkins中配置Ant
  4. Fiddle抓包Https
  5. libevent多线程使用bufferevent的那些事
  6. 《OpenSSL3.0学习之一 加密库简介|CSDN创作打卡》
  7. mongo里的type_MongoDB $type 操作符
  8. html图标点击转换颜色,PNG格式小图标的CSS任意颜色赋色技术_html/css_WEB-ITnose
  9. python处理pdf文件_好玩的Python 篇一:用Python显示和处理PDF文件
  10. c++连连看游戏_用Python玩连连看是什么效果?