因为我已经足够懒了,只显示了硬卧和硬座的余票信息(毕竟其他票我也没什么购买欲望)。

===========================以上全是扯淡题外话===========================

代码(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火车票查询相关推荐

  1. python实现火车票查询_python实现12306火车票查询器

    12306火车票购票软件大家都用过,怎么用Python写一个命令行的火车票查看器,要求在命令行敲一行命令来获得你想要的火车票信息,下面通过本文学习吧. Python火车票查询器 接口设置 先给这个小应 ...

  2. python作业火车票订购系统_Python实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  3. python作业火车票订购系统_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都具体给共享出来.(注重使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  4. python实现火车票查询_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  5. python查询12306余票_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  6. 12306火车票查询api调用文档

    在即将到来的双十二,在聚合数据平台上的12306火车票查询api将参与活动,首先我们将分享下12306火车票查询api代码文档及返回示例,可查询实时火车票余票,包括车次.车次始发站.车次终点站.出发时 ...

  7. 12306火车票查询——Python

    欢迎加入Python学习交流QQ群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 ! 最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详 ...

  8. Python爬虫实现12306火车票查询

    昨天早上,突发奇想想要给基友弄一个火车票查询工具,顺便熟悉一下html.json.js格式,为之后制作微信小程序做准备,于是便开始了爬虫的道路. 12306网站想要爬跟之前爬静态网页并不一样,首先由于 ...

  9. 使用Python和Splinter实现12306火车票查询与抢票

    有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文 ...

  10. 聚合数据Android SDK 12306火车票查询订票演示示例

    1.聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的juhe_sdk_ ...

最新文章

  1. 转 微博 linux中ctime,mtime,atime的区别
  2. IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
  3. sqlite学习笔记7:C语言中使用sqlite之打开数据库
  4. Effective_STL 学习笔记(四十三) 尽量用算法调用代替手写循环
  5. Web前端开发笔记——第三章 CSS语言 第五节 盒子模型
  6. java rabbitmq 并发_RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性...
  7. nginx 配置https_nginx 配置https
  8. WebbUpload的验证问题
  9. 关于LAMP配置Let’s Encrypt SSL证书
  10. python爬取豆瓣书籍_python爬取豆瓣书籍排行
  11. 局域网打印机怎么连接_mac连接局域网打印机
  12. flutter 里面读取和复制内容到手机剪切板
  13. 我在蚂蚁金服做后端:那些坚持在一个岗位做八年的人,后来怎么样了?...
  14. 林达华——我的PhD生活
  15. [perl.mak] Error 2
  16. 摄影之构图,了解画面构成的五大元素:主体、陪体、前景、背景、留白
  17. linux 重启nginx命令
  18. 设置matlab图像线框,matlab在图像中画长方形(框)
  19. 继承者的难题:李在镕能否接班三星?
  20. 数据库 not in 的坑

热门文章

  1. LMD VCL Complete 2020版功能推进
  2. 两个文件行合并linux,linux 两个文件合并
  3. 怦然心动(Flipped)-5
  4. mysql fatch array_辩别WEB服务程序,,了解常见的几种脚本和数据库之间的搭配组合及特点...
  5. 洛杉矶凌晨4点-------启航
  6. Python3入门机器学习之2.8scikit-learn中的Scaler
  7. vscode运行C程序
  8. 比较结构的关联词(二)
  9. 【SDOI2008】Sue的小球
  10. JPEG与jpg的区别