import requests#import pandas as pdimport jsonimport prettytable as ptimport datetimecurr_time=datetime.datetime.now()time = datetime.datetime.strftime(curr_time, '%Y-%m-%d %H:%M:%S')print(f' 现在是:{time} by琴棋书画' )print()print('*******欢迎使用12306火车票查票小工具**********')print()f = open('city.json', mode='r', encoding='utf-8')text = f.read()city_json = json.loads(text)#print(city_json)while True: from_station = input('请输入你出发的城市:') to_station = input('请输入你达到的城市:') train_date = input('请输入乘车时间(2022-11-13/年-月-日):') headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'no-cache', 'Cookie': '_uab_collina=166823523003171992715295; JSESSIONID=584E9E13FAD14A4CC1246A0886EAEBCD; BIGipServerotn=200278538.64545.0000; BIGipServerpool_passport=48497162.50215.0000; RAIL_EXPIRATION=1668496753621; RAIL_DEVICEID=Rz7stbJ-4FJ1lH0h3D8urQ9iA_ilqp_rpSpiEnbc1MD7V517p-MczHOcGV-fhjuFvFEXOSxJd2n-FXhT3MVuk3DLhbCva_aFmq9Fp7b144wKWGPL_jdNMpmSmFmMapinWnUr-sDjGDCbpM7bFBBHc1PsD74ZdBba; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; fo=a6mja8f0tfgaaysa8AAdkRbNDzBnhpW6al55sUUJuwkUfw2amN5S_gdVtbuYjhyVqom5bGD-e-PTBlehcVSEmk_haH2hSpa-zlQwLR0c1xzAOeD_l2zTXesDTQm-y4_mq-7fHsje5FzgGdQE5Sq8bbp0O-kgGDMIIDnznyR6jogSfCCTl58gJr_xVG0; route=c5c62a339e7744272a54643b3be5bf64; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u5B89%u9633%2CAYF; _jc_save_fromDate=2022-11-12; _jc_save_toDate=2022-11-12; _jc_save_wfdc_flag=dc', 'Host': 'kyfw.12306.cn', 'If-Modified-Since': '0', 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8C%97%E4%BA%AC,BJP&ts=%E5%AE%89%E9%98%B3,AYF&date=2022-11-12&flag=N,N,Y', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest537.36' } url = f'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={train_date}&leftTicketDTO.from_station={city_json[from_station]}&leftTicketDTO.to_station={city_json[to_station]}&purpose_codes=ADULT' response = requests.get(url=url, headers=headers) #print(response) result = response.json()['data']['result'] tb=pt.PrettyTable() tb.field_names=['序号','车次','出发时间','到达时间','途经时长','特等座','一等座','二等座','硬座','软座','无座','硬卧','软卧'] page=0 for index in result: # requests.utils.unquote(index) index_list = index.split('|') # print(index_list) train_number = index_list[3] # 车次 time_1 = index_list[8] # 出发时间 time_2 = index_list[9] # 到达时间 time_3=index_list[10] prince_seat = index_list[32] # 特等座 first_class_seat = index_list[31] # 一等座 second_class = index_list[30] # 二等座 hard_seat = index_list[29] # 硬座 soft_seat = index_list[24] # 软座 no_seat = index_list[26] # 无座 soft_sleeper = index_list[23] # 软卧 hard_sleeper = index_list[28] # 硬卧 dit = { 'Num': train_number, 'Start': time_1, 'End': time_2, 'long':time_3, 'Top': prince_seat, 'First':first_class_seat, 'Second': second_class, 'Yz': hard_seat, 'rz':soft_seat, 'Wz': no_seat, 'Rw': soft_sleeper, 'Yw': hard_sleeper, } tb.add_row([page,train_number,time_1,time_2,time_3,prince_seat,first_class_seat,second_class,hard_seat,soft_seat,no_seat,soft_sleeper,hard_sleeper]) page+=1 print(tb) again = input('是否继续查询(Y/N): ') if again == 'Y' or again == 'y': continue else: break
联系客服