Python 实现火车票查询工具.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python 实现火车票查询工具

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 dateOptions: -h,--help 显示帮助菜单 -g 高铁 -d 动车 -t 特快 -k 快速 -z 直达Example: tickets 北京 上海 2016-10-10 tickets -dg 成都 南京 2016-10-10from docopt import docoptdef 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格式的数据! 我们打开返回的数据看看:可以看到一列火车的数据用 Python 的语言说就是一个字典。接下来问题就简单了,我们只需要利用这个接口, 构建请求URL然后解析返回的JSON数据就可以了。但是我们发现,URL里面参数?from_station?和?to_station?并不是汉字,而是一个代号,而我们想要输入

文档评论(0)

dart004 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档