首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 实现一个火车票查询的工具

Python 实现一个火车票查询的工具

作者头像
CDA数据分析师
发布于 2018-02-05 06:46:44
发布于 2018-02-05 06:46:44
1.2K00
代码可运行
举报
文章被收录于专栏:CDA数据分析师CDA数据分析师
运行总次数:0
代码可运行

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

主要功能:

  1. 输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息
  2. 支持输入附加选项查询不同的火车的类型,比如高铁,动车。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#查询上海到北京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 文件里面,作为字典,程序运行的时候,将这个文件以模块的形式包含进去。 关于正则表达式,先占一个坑,以后在详细的写。

正则表达式的代码:

运行的时候:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 将输出重定向到一个新的文件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模块 优雅的输出

详细:http://www.jianshu.com/p/a6172b68810e

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手教你用python抢票回家过年 !(附代码)
来自公众号:大数据挖掘DT数据分析 作者:protream 本文图文结合,建议阅读8分钟。 本文教大家用Python写出抢火车票代码以及实战。 首先看看如何快速查看剩余火车票? 当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚掌握了Python基础,这将是个不错的小练习。 接口设计 一个应用写出来最终是要给人使用的,哪怕只是给你自己使用。所以,首先应该想
数据派THU
2018/01/26
2.9K0
数据库课程设计——MySQL火车票售票系统[通俗易懂]
体验链接: http://www.shadowingszy.top/train-tickets/index.html
全栈程序员站长
2022/08/31
2.8K0
数据库课程设计——MySQL火车票售票系统[通俗易懂]
一张24块5的火车票,能带你去哪看看?我用Python爬了一下
我(信誓旦旦状):等我爬下携程所有票价信息,以后给我一个预算,我就能跟你说你去到哪儿!
IT阅读排行榜
2019/11/12
7780
一张24块5的火车票,能带你去哪看看?我用Python爬了一下
Python骚操作-自动抢火车票
还有不到一个月就过春节了,你回家的火车票都买了吗?如果没有买到的话,不妨试用下本文的 Python 程序来帮你抢火车票,也可以帮你的家人和朋友来抢票,顺带学习一下 Python 爬虫技术,可谓一举两得,何乐而不为?
somenzz
2020/12/10
1.5K0
Python骚操作-自动抢火车票
零基础用Python | 实现12306火车票实时查询
大家都用过12306,今天我们来学习写一个Python程序,要求在命令行敲一行命令来获得你想要的火车票信息。 1 接口设置 先给这个小应用起个名字吧,既然及查询票务信息,那就叫它tickets 我们希望用户只要输入出发站,到达站以及日期就让就能获得想要的信息,所以tickets应该这样被使用: $ tickets from to date 最终 $ tickets [-gdtkz] from to date 2 开发环境 用virtualenv建立虚拟环境,用Python3开发, $ vir
小小科
2018/05/03
9890
零基础用Python | 实现12306火车票实时查询
数据库课程设计——火车票售票系统「建议收藏」
数据库课程设计的题目,设计了一个火车票售票系统,实现了列车信息查询,车票查询及购买,订单查询,个人信息管理等功能,数据是从12306爬取的真实数据。
全栈程序员站长
2022/08/31
3.4K0
数据库课程设计——火车票售票系统「建议收藏」
趣玩爬虫 | 12306火车车次信息爬取分析
本篇我们要进行的是12306火车车次信息的爬取分析。都说12306是目前反爬措施最强的网站,的确如此。博主于2017年专门研究过如何爬取并进行了购票分析,费了很大功夫终于成功地抢到了票,但是很不幸,没过多久12306就进行了大改版,写过的爬虫代码几乎成为了摆设。这里只是爬取车次信息,并不进行购票操作,后续可能会出专门的教程介绍这一块,本篇文章的重点不在于此。
啃饼思录
2019/05/28
6.6K0
2018年春运火车票今天开售,手把手教你用python抢票回家过年……
本文介绍了如何使用Python的Splinter库实现自动登录12306网站并抢票。首先通过模拟登录页面,获取用户名和密码。然后使用Splinter库浏览和交互网页,获取查询日期和验证码。最后通过调用12306的API接口,实现查询余票和抢票功能。
企鹅号小编
2018/01/04
1.2K0
2018年春运火车票今天开售,手把手教你用python抢票回家过年……
你的车票,我来负责!!!
我们要爬取的信息是https://www.12306.cn/index/上的车票信息
Python研究者
2020/10/29
8570
你的车票,我来负责!!!
史上最“脑残”的“抢火车票”程序(node.js版)
【背景】 快过年了,我妈一个电话打过来叫我给他买火车票,我到12306一查,硬座和硬卧基本没有了,高铁又太贵. 最后只抢了3张无座票,但是我妈说能不能买有座位的啊,我说没有了啊,我妈:你过两天再帮我看看。我:... 为了帮老妈抢到有座的票,后来用了360抢票插件,还用了网上的一个别人用c#写的客户端来抢票,妈的,用了两三天都没用。 最后还是打算自己用node写一个,当时我的想法就是写个简单的,能用就行。 所以,思路如下: 用node写一个爬虫,每过一分钟就爬取12306,查询某一辆火车是否还有余票,有余票就
用户1749219
2018/05/16
1.6K0
今日可抢回程火车票,实测两款GitHub开源抢票插件,所有坑我们都帮你踩过了
如果你对自己手速和市面上的各种“加速包”都没什么信心的话,不妨试试用程序员的手段抢票?
量子位
2020/02/10
1.7K0
python爬12306并买票_python开发12306抢票
1.本项目只是一个练习,熟悉python爬虫技术,没有任何用途 2.最后运行的结果有时候会成功,有时候会显示错误界面,如下图所示。因为12306怎么可能允许你一直爬它呢
全栈程序员站长
2022/11/17
2.3K0
python爬12306并买票_python开发12306抢票
【详解】实现自动抢火车票(基于Python3.6+splinter)
随着网络购票的普及,节假日或热门线路的火车票往往一票难求。为了提高抢票效率,我们可以利用Python编写一个自动抢票脚本。本文将介绍如何使用Python 3.6和splinter库来实现这一功能。
大盘鸡拌面
2025/03/18
6790
python爬虫之12306网站--火车
1.火车票信息查询是基于车站信息查询,先完成车站信息查询,然后根据车站信息查询生成的url地址去查询当前已知出发站和目的站的所有车次车票信息
py3study
2020/01/17
1.1K0
是程序员就用 Python 查 12306 的票
当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的App?
诸葛青云
2019/04/08
5590
VBA 12306火车票查询系统V1.0
MsgBox "不允许搜索之前的车次!", vbExclamation, "VB小源码"
办公魔盒
2019/07/22
2.1K1
VBA 12306火车票查询系统V1.0
我在github上面的一个项目————用Python爬取12306火车票
运行示例 这是一个爬取火车票的python代码,先上效果图: 工程目录 如上图:color_set.py是用来设置字体颜色的。 里面设置了红色和黄色的字体。 Creat_set.py是用来创建字典的。 在浏览器里面可以输入上面那串url。 经过Creat_station.py处理,结果数据在station.py文件中 下面是信息初始化的代码。 代码中的url可能会变化,需要作相应的调整。 然后是我们主体的程序。 显示票价及相关信息 最后就是最前面的结果啦
Lvshen
2022/05/05
9271
我在github上面的一个项目————用Python爬取12306火车票
python实现火车票查询「建议收藏」
2 requests: 使用Python访问HTTP资源的必备库           
全栈程序员站长
2022/09/01
7580
python实现火车票查询「建议收藏」
如何用Python3实现12306火车票自动抢票,小白必学
最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正。话不多说,进入正题:在进入正题之前,我想说明一下,由于12306官网的改版更新,所以脚本作了一点小小的变化,具体修改后的源码,可以到GitHub上面查看……新版脚本源码
用户7286429
2020/05/08
2.7K0
如何用Python3实现12306火车票自动抢票,小白必学
Python 抢火车票神器,支持候补抢票
然饿大多数人碰到的是这种情况:当你满心期待摩拳擦掌准备抢票的时候,你会发现一票难求!想回趟家真难!
Python编程与实战
2021/01/25
2.5K0
推荐阅读
相关推荐
手把手教你用python抢票回家过年 !(附代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档