考试中心
CDA网校
CDA社区
CDA竞赛
CDA技术答疑
CDA会员
CDA产品
大数据与人工智能实验室
好学AI
(下一代智能学习产品)
CDA网校
CAIE人工智能工程师认证
首页
资讯
动态
认证考试
企业内训
搜索
登录
首页
精彩阅读
Python 实现一个火车票查询的工具
Python 实现一个火车票查询的工具
2017-04-19
收藏
使用
python
实现一个查询火车票的小工具
主要功能:
输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息
支持输入附加选项查询不同的火车的类型,比如高铁,动车。
#查询
上海到北京2017-04-25
的高铁和动车的车票,-g -d 是附加选项 表示高铁和动车
python
3 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里面
python
3 test3.py > stations.py
3. 使用docopt 优雅的完成命令行的输入
docopt 是一个很优雅的处理输入的一个模块,docopt可以根据你写的文档描述,可以自动为你生成解析器,可以非常容易的为你的
python
程序创建命令行界面。http://www.jianshu.com/p/d2c7cbf21931
4. 主程序
4.1 处理url
4.2 输出
运行结果:
5. 使用prettytable模块 优雅的输出
详细:
http://www.jianshu.com/p/a6172b68810e
作者 sexycoder
本文转载自简书,转载需授权
正则表达式
python
数据分析咨询请扫描二维码
上一篇
图论在大数据分析中的作用!
下一篇
CDA认证再升一档!与国家共同推进大数据人才培养标准教育事业!
考试指南
考试介绍
考试大纲
考试内容
考试地点
报考指南
报考流程
考试时间
报名费用
联系我们
热门栏目
考试动态
报考指南
复习备考
职业发展
直播公开课
经验分享
客服
在线
立即咨询