- 4
- 0
- 约1.04万字
- 约 19页
- 2019-09-27 发布于江苏
- 举报
PAGE
PAGE 1
Python实现火车票查询
项目简介
当你想查询一下火车票信息的时候,你还在上 12306 官网吗?或是打开你手机里的 APP?
下面让我们来用 Python 写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚掌握了 Python 基础,这将是个不错的小练习。
1.1 知识点
Python 基础知识的综合运用
docopt、requests、colorama?及?prettytable?库的使用
setuptools 的使用
1.2 效果截图
二、接口设计
一个应用写出来最终是要给人使用的,哪怕只是给你自己使用。
所以,首先应该想想你希望怎么使用它?让我们先给这个小应用起个名字吧,既然及查询票务信息,那就叫它?tickets?好了。
我们希望用户只要输入出发站,到达站以及日期就让就能获得想要的信息,比如要查看10月30号上海-北京的火车余票, 我们只需输入:
$ python tickets.py 上海 北京 2016-10-30
注意:上面的日期(包括后面的)是笔者写文章时确定的日期,当你在做这个项目的时候可能要根据当前时间做适当调整。
转化为程序语言就是:
$ python tickets.py from to date
另外,火车有各种类型,高铁、动车、特快、快速和直达,我们希望可以提供选项只查询特定的一种或几种的火车,所以,我们应该有下面这些选项:
-g 高铁
-d 动车
-t 特快
-k 快速
-z 直达
这几个选项应该能被组合使用,所以,最终我们的接口应该是这个样子的:
$ python tickets.py [-gdtkz] from to date
接口已经确定好了,剩下的就是实现它了。
三、代码实现
首先安装一下实验需要用到的库:
$ sudo pip3 install requests prettytable docopt colorama
requests,使用 Python 访问 HTTP 资源的必备库。
docopt,Python3 命令行参数解析工具。
prettytable, 格式化信息打印工具,能让你像 MySQL 那样打印数据。
colorama,命令行着色工具
3.1 解析参数
Python有很多写命令行参数解析工具,如?argparse,?docopt,?click,这里我们选用的是?docopt这个简单易用的工具。docopt?可以按我们在文档字符串中定义的格式来解析参数,比如我们在?tickets.py?中写下下面的内容(实验楼环境下,通过点击右下角的键盘小图标可以选择中文输入法):
# coding: utf-8
命令行火车票查看器
Usage:
tickets [-gdtkz] from to date
Options:
-h,--help 显示帮助菜单
-g 高铁
-d 动车
-t 特快
-k 快速
-z 直达
Example:
tickets 北京 上海 2016-10-10
tickets -dg 成都 南京 2016-10-10
from docopt import docopt
def cli():
command-line interface
arguments = docopt(__doc__)
print(arguments)
if __name__ == __main__:
cli()
上面的程序中,?docopt?会根据我们在?docstring?中的定义的格式自动解析出参数并返回一个字典,也就是?arguments, 我们打印出了这个字典的内容。下面我们运行一下这个程序, 比如查询一下10月30号从成都到南京的动车和高铁:
$ python tickets.py -dg 成都 南京 2016-10-10
我们得到下面的参数解析结果:
3.2 获取数据
参数已经解析好了,下面就是如何获取数据了,这也是最主要的部分。首先我们用实验楼环境的Firefox浏览打开? 12306,进入余票查询页面,按下?F12?打开开发者工具,选中?Network?一栏,在查询框中随便查询一次,我们在调试工具观察下请求和响应:
注意到上面的请求 URL ,它是由基 URL?/otn/lcxxcx/query?加四个参数构成的,这四个参数分别代表,查询的类型(成人?学生?),日期,出发车站,到达车站:
再来看看响应:
返回的是JSON格式的数据! 我们打开返回的数据看看:
可以看到一列火车的数据用 P
您可能关注的文档
最近下载
- 专题23 阅读理解(科普和文化)-备战中考英语高能训练(原卷版).docx VIP
- 中考数学模型 专题2.7 二次函数中的最值问题(学生版+解析版).docx
- 排水管理与排水设施建设管理的调研报告5.docx
- 中职物理探究磁现象及其应用教案.pdf
- 中考数学模型 专题2.6 逆等线模型(学生版+解析版) .docx
- 中职物理探究磁现象及其应用教学实施报告.pdf VIP
- 《3T模锻电液锤液压系统的设计》-毕业学术论文(设计).doc VIP
- 2025年放射法律法规及防护知识培训试题及答案.docx VIP
- (正式版)D-L∕T 517-2012 电力科技成果分类与代码.docx VIP
- 3.3.1 查对制度(word完结版).docx VIP
原创力文档

文档评论(0)