12306火车票查询
因为我已经足够懒了,只显示了硬卧和硬座的余票信息(毕竟其他票我也没什么购买欲望)。
===========================以上全是扯淡题外话===========================
代码(GitHub地址)中所用到的接口,可以在12306官方新版查询网页中获取到。本文笔者使用了prettytable让显示结果更加美观,使用了json将纯文本的json格式转换成python中的字典数组,在获取数据的时候,使用了User-Agent来模拟浏览器。
代码使用操作方式:
python main.py 2016-06-22 赣州 上海
第一个地址是出发城市,第二个地址是去往的城市。
# encoding:utf-8import urllib2,os,sys,json,timefrom prettytable import PrettyTabledef get_station_list():f = open('stations.dat')lines = f.readlines()dic = {}for line in lines:line = line.strip('\n')dic[line.split(' ')[0]] = line.split(' ')[1]return dicdef get_content(url):req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'}req = urllib2.Request(url, None, req_header)resp = urllib2.urlopen(req,None,30)content = resp.read()return contentif __name__=='__main__':try:train_date = sys.argv[1]from_station = get_station_list()[sys.argv[2]]to_station = get_station_list()[sys.argv[3]]except:print 'usage: python main.py 2016-06-22 赣州 南昌'sys.exit(0)passwhile 1==1:os.system('clear')print '日期:\033[1;32;40m%s\033[0m 从 \033[1;31;40m%s\033[0m 到 \033[1;31;40m%s\033[0m'%(train_date, sys.argv[2], sys.argv[3])url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date='+train_date+'&leftTicketDTO.from_station='+from_station+'&leftTicketDTO.to_station='+to_station+'&purpose_codes=ADULT'# print urlcontent = get_content(url)j = json.loads(content)t = PrettyTable(["车次", "出发站", "到达站", "出发时间", "到达时间", "历时", "硬卧", "硬座"])t.align[u"出发站"] = "l" # Left align city namest.align[u'到达站'] = 'l't.padding_width = 1 # One space between column edges and contents (default)for item in j['data']:# item['secretStr'] = ''if u'无' == item['queryLeftNewDTO']['yz_num']:item['queryLeftNewDTO']['yz_num'] = ''if u'无' == item['queryLeftNewDTO']['yw_num']:item['queryLeftNewDTO']['yw_num'] = ''t.add_row([item['queryLeftNewDTO']['station_train_code'],item['queryLeftNewDTO']['from_station_name'],item['queryLeftNewDTO']['to_station_name'],item['queryLeftNewDTO']['start_time'],item['queryLeftNewDTO']['arrive_time'],item['queryLeftNewDTO']['lishi'],item['queryLeftNewDTO']['yw_num'],item['queryLeftNewDTO']['yz_num']])print toperation = raw_input('')if 'exit' == operation or 'q' == operation:sys.exit(0)
12306火车票查询相关推荐
- python实现火车票查询_python实现12306火车票查询器
12306火车票购票软件大家都用过,怎么用Python写一个命令行的火车票查看器,要求在命令行敲一行命令来获得你想要的火车票信息,下面通过本文学习吧. Python火车票查询器 接口设置 先给这个小应 ...
- python作业火车票订购系统_Python实现12306火车票查询系统
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- python作业火车票订购系统_Python脚本实现12306火车票查询系统
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都具体给共享出来.(注重使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- python实现火车票查询_Python脚本实现12306火车票查询系统
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- python查询12306余票_Python脚本实现12306火车票查询系统
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- 12306火车票查询api调用文档
在即将到来的双十二,在聚合数据平台上的12306火车票查询api将参与活动,首先我们将分享下12306火车票查询api代码文档及返回示例,可查询实时火车票余票,包括车次.车次始发站.车次终点站.出发时 ...
- 12306火车票查询——Python
欢迎加入Python学习交流QQ群:535993938 禁止闲聊 ! 名额有限 ! 非喜勿进 ! 最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详 ...
- Python爬虫实现12306火车票查询
昨天早上,突发奇想想要给基友弄一个火车票查询工具,顺便熟悉一下html.json.js格式,为之后制作微信小程序做准备,于是便开始了爬虫的道路. 12306网站想要爬跟之前爬静态网页并不一样,首先由于 ...
- 使用Python和Splinter实现12306火车票查询与抢票
有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文 ...
- 聚合数据Android SDK 12306火车票查询订票演示示例
1.聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的juhe_sdk_ ...
最新文章
- 转 微博 linux中ctime,mtime,atime的区别
- IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- sqlite学习笔记7:C语言中使用sqlite之打开数据库
- Effective_STL 学习笔记(四十三) 尽量用算法调用代替手写循环
- Web前端开发笔记——第三章 CSS语言 第五节 盒子模型
- java rabbitmq 并发_RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性...
- nginx 配置https_nginx 配置https
- WebbUpload的验证问题
- 关于LAMP配置Let’s Encrypt SSL证书
- python爬取豆瓣书籍_python爬取豆瓣书籍排行
- 局域网打印机怎么连接_mac连接局域网打印机
- flutter 里面读取和复制内容到手机剪切板
- 我在蚂蚁金服做后端:那些坚持在一个岗位做八年的人,后来怎么样了?...
- 林达华——我的PhD生活
- [perl.mak] Error 2
- 摄影之构图,了解画面构成的五大元素:主体、陪体、前景、背景、留白
- linux 重启nginx命令
- 设置matlab图像线框,matlab在图像中画长方形(框)
- 继承者的难题:李在镕能否接班三星?
- 数据库 not in 的坑