使用python脚本实现查询火车票信息的效果图如下:

实现的代码:

1 # coding: utf-8

2

3 """命令行火车票查看器

4

5 Usage:

6 tickets [-gdtkz]

7

8 Options:

9 -h,--help 显示帮助菜单

10 -g 高铁

11 -d 动车

12 -t 特快

13 -k 快速

14 -z 直达

15

16 Example:

17 tickets 北京 上海 2016-10-10

18 tickets -dg 成都 南京 2016-10-10

19 """

20

21 import json

22 import requests

23 import prettytable

24 from docopt import docopt

25 from colorama import init, Fore

26

27

28 class CollectInfo:

29 def __init__(self):

30 self.qurey_ret = []

31 self.header = ['车次信息', '发/到时间', '发/到站', '历时', '票价', '余票']

32

33 # 获取车次相关的所有信息

34 def query_html_ret(self, query_args):

35 url = 'http://api.12306.com/v1/train/trainInfos?arrStationCode={to_station}&deptDate={date}\

36 &deptStationCode={source_station}&findGD=false'.format(to_station=query_args['to_station'],

37 source_station=query_args['source_station'],

38 date=query_args['date'])

39 row_ret = requests.get(url)

40 return row_ret.json()

41

42 # 解析获取到的结果

43 def paser_ret(self, row_ret):

44 trains_info = row_ret['data']['trainInfos']

45 for info in trains_info:

46 row_info = []

47 # 获取车次信息

48 row_info.append('\n' + info['trainCode'])

49

50 # 获取车次到站时间信息

51 row_info.append('\n' + '\n'.join([Fore.GREEN + info['deptTime']+ Fore.RESET,

52 Fore.RED + info['arrTime']+ Fore.RESET]))

53

54 # 获取车次站点名称

55 row_info.append('\n' + '\n'.join([Fore.GREEN + info['deptStationName'] + Fore.RESET,

56 Fore.RED + info['arrStationName']+ Fore.RESET]))

57

58 # 获取车次到达站点所需时间

59 row_info.append('\n' + info['runTime'])

60

61 # 获取票价以及余票信息

62 seat_price = []

63 seat_num = []

64 for seat in info['seatList']:

65 seat_price.append(seat['seatName'] + ':' + seat['seatPrice'])

66 if int(seat['seatNum']) > 10:

67 ticknum = Fore.GREEN + seat['seatNum'] + Fore.RESET

68 else:

69 ticknum = seat['seatNum']

70 seat_num.append(ticknum)

71 row_info.append('\n'.join(seat_price))

72 row_info.append('\n'.join(seat_num))

73 self.qurey_ret.append(row_info)

74 self.qurey_ret.append([' ', ' ', ' ', ' ', ' ', ' '])

75

76 return self.qurey_ret

77

78 def show_with_table(self):

79 ticket_table = prettytable.PrettyTable()

80

81 ticket_table.field_names = self.header

82

83 for row in self.qurey_ret:

84 if len(row) == 0:

85 continue

86 ticket_table.add_row(row)

87 return ticket_table

88

89

90 def main():

91 arguments = docopt(__doc__)

92 query_args = {}

93 init()

94

95 # 获取所有站点信息(stations.txt信息通过 函数获取)

96 # https: // kyfw.12306.cn / otn / resources / js / framework / station_name.js?station_version = 1.8971

97 f = open('stations.txt', 'r')

98 info = f.read()

99 stations_info = json.loads(info)

100

101 # 从所有站点信息中获取所要查询站点的代码信息

102 query_args['to_station'] = stations_info[arguments['']]

103 query_args['source_station'] = stations_info[arguments['']]

104 query_args['date'] = arguments['']

105

106 # 向12306查询,得到跟车次相关的所有信息

107 collect_train = CollectInfo()

108 row_ret = collect_train.query_html_ret(query_args)

109

110 collect_train.paser_ret(row_ret)

111 table = collect_train.show_with_table()

112 print(table)

113

114

115 if __name__ == '__main__':

116 main()

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python查火车票_使用python制作查询火车票工具相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. 使用python制作查询火车票工具

    使用python脚本实现查询火车票信息的效果图如下: 实现的代码: 1 # coding: utf-8 2 3 """命令行火车票查看器 4 5 Usage: 6 tic ...

  4. python爬虫抢火车票_利用Python实现12306爬虫--查票

    在上一篇文章(http://www.cnblogs.com/fangtaoa/p/8321449.html)中,我们实现了12306爬虫的登录功能,接下来,我们就来实现查票的功能. 其实实现查票的功能 ...

  5. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  6. python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员

    Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...

  7. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  8. python char 相等_用 Python 实现 Excel文本函数

    用 Python 实现 Excel文本函数 Excel 是非常强大的电子表格软件,大家日常经常用 Excel 处理成绩.师生名单.分析数据等,对 Excel 的函数比较了解,通过用 Python 实现 ...

  9. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

最新文章

  1. java phantomjs 2.1.1_Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1
  2. Warning message:In a + b : longer object length is not a multiple of shorter object length
  3. 用 Hadoop 进行分布式并行编程, 第 2 部分 程序实例与分析
  4. Oracle过滤与排序
  5. WinPcap pcap_next_ex抓包
  6. VS2012找不到EF框架实体模型的解决方法
  7. 网页制作中如何自定义网页图标
  8. 端到端测试 VS 单元测试
  9. w ndoWs8pE模式下载,win7 PE
  10. python spyder下载_2.4 熟悉Anaconda3的开发工具——Spyder
  11. axios官方文档——中文版
  12. 如何设置最美的win11桌面(附隐藏任务栏方法)
  13. QT开发代码格式化设置
  14. 易知微母公司袋鼠云获过亿元C+轮融资,深耕国产自研数字化领域
  15. 《失控》书摘与读书笔记
  16. 【菠萝狗四足机器人】二次开发教程--第一章 【简介与开发环境搭建】
  17. 逆商之CORE和LEAD
  18. 包装类------拆箱与装箱
  19. 原生video标签隐藏底部功能按钮
  20. 用Python制作简单的小游戏

热门文章

  1. Spring boot之Actutor
  2. python的udp攻击
  3. 变频器必须设置的5大参数
  4. 【飞控开发基础教程9】疯壳·开源编队无人机-PWM(电机控制)
  5. Linux驱动开发学习笔记【12】:Linux自带LED灯驱动
  6. 《黑客攻防技术宝典:Web实战篇》习题答案(一)
  7. 《黑客攻防技术宝典:Web实战篇》习题答案(三)
  8. 小程序开发--- 1. 获取数组中某个字段的值或获取列表索引
  9. springboot请求注解的使用Get/Post
  10. 惯量辨识c语言程序设计,异步电机参数在线辨识技术的(硬件部分)毕业设计.doc...