python新手小项目:12306车票查询和预定(Tkinter可视化+12306车次数据获取+订票自动化)免费获取源码

(一)项目展示

1.基础界面

36c7c80c01654333ae7a80a6b08d63e8.png

2.车票查询

输入出发站目的站出发时间设置车票类型,点击查询,即可从12306官网获取车次信息并展示。

3c212cfff02f4bd08f647a2b90e6d771.png

3.车票预定

需要先设置登录信息乘车人信息,以便python根据其自动选择车票类型

设置登录信息

a47f19cfb6a6488cbfad710ed345f8d6.png

设置乘车人信息

7c6d016dae0e4f609421a3ee17a275eb.png

选择车票类型并输入车次号,点击预定即可自动订购。不过第一次登录需要从手机获取验证码,所以这里还需要手动输入,往后无需再次登录,除非下次打开程序。

预定车票:

选择车次:T109  北京-上海(2023-11-25)普通票 硬卧

f452c2bb6e944142aa92f016445317e1.png

点击后等待浏览器打开自动输入账号密码,并发送验证码。在手机上接收后人工输入验证码,点击ok即可(验证码这一块还得人工,没办法,第一次登录就这样)

87fcfa03341942a2a2f54e3468f9c8e7.png

成功登录

ea3cdb116c6c4f39a122537446141754.png

3127a2168651402cb831c0bb23f25c31.png

登录后根据信息自动填入和选择车票信息,最后就自动预定占座并生成订单。

af41cb106ec14f8c991e328ae1249b7a.png

最后在手机上支付订单即可。

85a499520627473186b044d1fe29ec48.png

(二)项目获取

本人新手,大学期间刚学完python写的小项目。参考过其他人做的类似系统,大同小异,纯学习和交流,大家一起进步。

可以的话就给个赞,不喜勿喷,谢谢哈~~。

项目源码下面地址免费获取,有需要的朋友可以下载(每行源码都有注释)。

GitHub源码获取地址

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个很有趣的项目,使用了PythonTkinter、urllib和json模块来实现火车票信息查询功能。TkinterPython的标准GUI库,用于创建窗口和控件,而urllib和json则用于从网络上获取和解析数据。 首先,你需要在窗口中添加一些控件,如文本框、标签、按钮等。然后,当用户点击查询按钮时,你需要使用urllib发送HTTP请求到火车票查询API,并从响应中解析出所需的信息。最后,你需要将结果显示在窗口中。 以下是大体的步骤: 1. 导入Tkinter、urllib和json模块。 2. 创建一个窗口并添加所需的控件,如文本框、标签和按钮。 3. 创建一个函数,当用户点击查询按钮时会被调用。该函数应该从文本框中获取用户输入的出发地、目的地、日期等信息,并将其构造成查询URL。 4. 使用urllib发送HTTP请求到查询URL,并从响应中获取JSON格式的火车票信息。 5. 解析JSON数据,提取出需要的信息,并将其显示在窗口中。 6. 运行窗口,等待用户输入查询信息。 下面是一个简单的示例代码,仅供参考: ```python import tkinter as tk import urllib.request import json root = tk.Tk() root.title("火车票查询工具") frame1 = tk.Frame(root) frame1.pack(pady=10) label1 = tk.Label(frame1, text="出发地:") label1.pack(side=tk.LEFT) entry1 = tk.Entry(frame1) entry1.pack(side=tk.LEFT) label2 = tk.Label(frame1, text="目的地:") label2.pack(side=tk.LEFT) entry2 = tk.Entry(frame1) entry2.pack(side=tk.LEFT) label3 = tk.Label(frame1, text="日期:") label3.pack(side=tk.LEFT) entry3 = tk.Entry(frame1) entry3.pack(side=tk.LEFT) frame2 = tk.Frame(root) frame2.pack(pady=10) text = tk.Text(frame2, height=20, width=50) text.pack(side=tk.LEFT) scrollbar = tk.Scrollbar(frame2) scrollbar.pack(side=tk.RIGHT, fill=tk.Y) text.config(yscrollcommand=scrollbar.set) scrollbar.config(command=text.yview) def query(): url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=" + \ entry3.get() + "&leftTicketDTO.from_station=" + \ entry1.get() + "&leftTicketDTO.to_station=" + entry2.get() + "&purpose_codes=ADULT" req = urllib.request.Request(url) req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") response = urllib.request.urlopen(req) result = json.loads(response.read().decode('utf-8')) trains = result['data']['result'] text.delete('1.0', tk.END) for train in trains: train_info = train.split('|') text.insert(tk.END, "车次:" + train_info[3] + "\n") text.insert(tk.END, "出发站:" + train_info[6] + "\n") text.insert(tk.END, "到达站:" + train_info[7] + "\n") text.insert(tk.END, "出发时间:" + train_info[8] + "\n") text.insert(tk.END, "到达时间:" + train_info[9] + "\n") text.insert(tk.END, "历时:" + train_info[10] + "\n") text.insert(tk.END, "商务座:" + train_info[32] + "\n") text.insert(tk.END, "一等座:" + train_info[31] + "\n") text.insert(tk.END, "二等座:" + train_info[30] + "\n") text.insert(tk.END, "软卧:" + train_info[23] + "\n") text.insert(tk.END, "硬卧:" + train_info[28] + "\n") text.insert(tk.END, "硬座:" + train_info[29] + "\n") text.insert(tk.END, "\n") button = tk.Button(root, text="查询", command=query) button.pack() root.mainloop() ``` 该程序会创建一个简单的窗口,用户可以在其中输入出发地、目的地和日期信息,并点击“查询”按钮进行查询查询结果将显示在窗口的文本框中。注意,这个示例代码中使用的查询API可能已经过时,请自行查找可用的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值