打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python学习源码分享:12306火车票查票小工具
userphoto

2022.12.13 新疆

关注
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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python根据股票代码获取当前数据
全国铁路退票1.15亿张:“退票”不是'return ticket'
有了python-dateutil,就不用再头疼日期计算了!
Dart基础语言 — 列表
【关于列车词汇】
这可能是Python面向对象编程的最佳实践! 崔庆才 Python大本营 昨天 作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服