原标题: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里面python3 test3.py > stations.py

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

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

4. 主程序

4.1 处理url

4.2 输出

运行结果:

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

from prettytable import PrettyTable

def pretty_print():

trains=[[11,12,13,14,15,16],[21,22,23,24,25,26],[31,32,33,34,35,36]]

header='list1 list2 list3 list4 list5 list6'.split()

pt=PrettyTable()

pt._set_field_names(header)

for train in trains:

pt.add_row(train)

print(pt)

pretty_print()

文章来源:简书

《Python机器学习》是炼数成金《机器学习》课程的姐妹篇,将大幅度补充《机器学习》中没有涉及,但大家又非常感兴趣的内容,详细地讲解剪枝过程,以及之前没有涉及的回归树,讲述机器学习的主流算法在python下的实现等等!返回搜狐,查看更多

责任编辑:

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

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

    原标题:Python 实现一个火车票查询的工具 作者 sexycoder 本文转载自简书,转载需授权 使用 python 实现一个查询火车票的小工具 主要功能: 输入出发车站,到达车站,时间,然后返回 ...

  2. 用python的tkinter和爬虫制作一个天气查询窗口

    翻开从前的代码,发现有段时间对 tkinter 图形化开发界面特别感兴趣,所以在这里和大家分享一下,做的一个小小的实例. 那么如何快速的创建一个GUI程序,只需要先导入Tkinter模块,创建一个窗口 ...

  3. Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)

    1.事务级别控制 可以在Hibernate的配置文件中对事务进行配置.配置文件中,可以设置事务的隔离级别.其具体的配置方法是在hibernate.cfg.xml文件中的<session-fact ...

  4. python识别火车票二维码_Python 实现火车票查询工具

    一.实验简介 当你想查询一下火车票信息的时候,你还在上 12306 官网吗?或是打开你手机里的 APP? 下面让我们来用 Python 写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你 ...

  5. 一个可以查询全国火车票剩余票数的网址~以后回家不怕没座了~~

    这是一个可以查询到全国火车票剩余票量的网址,进入网页后选择下方的余票查询即可. http://www.12306.cn/mormhweb/kyfw/

  6. 用Python做了一个法律查询小工具,非常好用

    用Python做了一个法律查询小工具,非常好用 效果展示 准备工作 主要代码 哈喽兄弟,今天给大家分享一个Python tkinter制作法律查询小工具. 光爬虫大家也只能自己用用,就算打包了exe, ...

  7. 用Python编写一个ISBN查询工具,秒查图书信息

    目录 1.引言: 2.正文: 3.实例分析: 4.总结: getnameformisbn.py 1.引言: 2.正文: ISBN查询工具通常用于图书管理.图书销售.图书收集和阅读等场景.以下是一些具体 ...

  8. java实现火车票查询_各位朋友,有人知道怎么用Java语言设计一个火车票购票系统吗?...

    一.需求分析 1.设计题目:车票管理系统 用JAVA语言和数据结构知识设计设计车票管理系统.要求如下所述: 一车站每天有n个发车班次,每个班次都有一个班次号(1.2.3-n),固定的发车时间,固定的路 ...

  9. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

最新文章

  1. SpringCloud中父子pom的结构和写法
  2. win64环境下的一些配置
  3. 【缅怀妈妈系列诗歌】之八:妈妈,我不会忘记
  4. Android笔记 fragment的向下兼容
  5. 95-866-040-源码-吞吐量-提升吞吐的利器 MicroBatch
  6. cholesky分解_Time Series Analysis-1.2 LDL分解
  7. 国内国外最好的java开发论坛及站点 [转]
  8. mysql创建新用户并设置密码时报错:Your password does not satisfy the current policy requirements
  9. 数字图像处理 matlab 傅里叶变换及逆变换 余弦变换及逆变换(使用代码库)
  10. 国际化的locale类详解
  11. 谷歌浏览器翻译插件的安装与使用
  12. 又一百度杰出科学家离职,百度研究院成中国AI的黄埔军校
  13. SSO的实现和参考工具类
  14. 前后端开发实用网站推荐
  15. 动态时间规整算法DTW
  16. 电力变电站三维可视化
  17. 【Node.js】之项目准备和首页
  18. 如有定义int a=128; 则输出语句printf(“%o”,a);的输出结果为?。
  19. python url编码-----urllib的urlencode和quote和quote_plus
  20. py语法06-组合数据类型

热门文章

  1. 计算机毕设Python+Vue医疗门诊管理系统(程序+LW+部署)
  2. 你有遇到客户给你发假水单的事吗?最后都怎么识别出来了?
  3. DLC430SK考勤机接线方法
  4. php格式图片怎么打开方式,php格式文件打开的四种方法
  5. 阿里云服务器报错: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request...
  6. 历年计算机一级考试原题,全国计算机等级考试一级历年上机真题.doc
  7. 区块链“不可能三角难题”解决了
  8. 2021年中国乙二酸产能格局及进出口贸易分析:华峰化工己二酸产能全国排名第一[图]
  9. 项目管理实践篇(二):总结项目经历
  10. MySql Povit,[MySQL|Postgresql] Pivot 通用技巧