首页 > 代码库 > 12306火车票查询工具
12306火车票查询工具
使用Python实现的火车票查询工具:
Usage: ticket.py [-gdtzk] <from> <to> <date>
Options:
-h,--help 帮助信息
-a 所有
-g 高铁
-d 动车
-t 特快
-z 直达
-k 快速
Demo: ticket.py shenzhen beijing 20161001 -g
1 #!/usr/bin/env python 2 #coding:utf-8 3 import urllib2,re,json 4 import ssl,sys,datetime 5 from prettytable import PrettyTable 6 ssl._create_default_https_context = ssl._create_unverified_context #设置SSL为不验证的方式 7 def Parser_station(station_name): #获得站点名对应站点代号的字典 8 url_code="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8966" 9 response=urllib2.urlopen(urllib2.Request(url_code))10 result=response.read()11 stations=re.findall(r‘([A-Z]+)\|([a-z]+)‘,result)12 stations=dict(stations)13 stations_dict=dict(zip(stations.values(),stations.keys()))14 return stations_dict[station_name]15 16 def Print_ticket(from_station,to_station,select_date,option=‘-a‘):17 print "旅行计划:\t"+select_date+‘\t‘+from_station+"\t--->\t"+to_station+"\t"+‘[查询时间:\t‘+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+‘]‘18 from_station=Parser_station(from_station) #获得起点的代号19 to_station=Parser_station(to_station) #获得终点的代号20 select_date=select_date[0:4]+‘-‘+select_date[4:6]+‘-‘+select_date[6:]21 url_info="https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=%s&from_station=%s&to_station=%s" % (select_date,from_station,to_station)22 response=urllib2.urlopen(urllib2.Request(url_info))23 result=response.read()24 info=json.loads(result)25 train_list=info[‘data‘][‘datas‘]26 pt=PrettyTable()27 header=["时间",‘历时‘,‘车次‘,"站点",‘商务座‘,‘特等座‘,‘一等座‘,‘二等座‘,‘高级软卧‘,‘软卧‘,‘硬卧‘,‘软座‘,‘硬座‘,‘无座‘,‘其它‘,‘备注‘]28 pt.field_names=header29 tmp=u"正常车次,不受控"30 num=031 option=list(option)[1:]32 for i in train_list:33 if i[‘controlled_train_message‘] == tmp:34 i[‘controlled_train_message‘]=‘‘35 else:36 pass37 train_time=‘\033[92m‘+i[‘start_time‘]+‘\033[0m‘+"\n"+‘\033[91m‘+i[‘arrive_time‘]+‘\033[0m‘38 train_station=‘\033[92m‘+i[‘from_station_name‘]+‘\033[0m‘+"\n"+‘\033[91m‘+i[‘to_station_name‘]+‘\033[0m‘39 li=[train_time,i[‘lishi‘],i[‘station_train_code‘],train_station,i[‘swz_num‘],i[‘tz_num‘],i[‘zy_num‘],i[‘ze_num‘],i[‘gr_num‘],i[‘rw_num‘],i[‘yw_num‘],i[‘rz_num‘],i[‘yz_num‘],i[‘wz_num‘],i[‘qt_num‘],i[‘controlled_train_message‘]]40 train_code=str(i[‘station_train_code‘][0]).lower()41 if train_code in option:42 pt.add_row(li)43 num+=144 elif ‘h‘ in option:45 print ‘‘‘46 Usage: ticket.py [-gdtzk] <from> <to> <date>47 Options:48 -h,--help 帮助信息49 -a 所有50 -g 高铁51 -d 动车52 -t 特快53 -z 直达54 -k 快速55 Example:56 ticket.py shenzhen beijing 20161001 -g57 ‘‘‘58 return 059 elif ‘a‘ in option:60 pt.add_row(li)61 num+=162 else:63 pass64 print pt65 print "Total: ",num66 if len(sys.argv) < 5:67 Print_ticket(sys.argv[1],sys.argv[2],sys.argv[3])68 else:69 Print_ticket(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])
12306火车票查询工具
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。