优草派  >   Python

python实现12306火车票查询器

王晨            来源:优草派

随着交通的越来越发达,我们的出行方案也越来越多元化。旅行、探亲、出差等不同目的都需要我们购买火车票。如何高效地查询需要的火车票成为了一件非常重要的事情。在这里,我们可以使用 Python 编写一个 12306 火车票查询器。

python实现12306火车票查询器

首先需要了解的是,12306 站点提供了开放的接口,我们就可以通过接口获取到余票信息。接口文档如下链接:https://www.12306.cn/index/index.html 。由于数据安全性的考虑,12306 接口请求需要在 SSL 环境下的 HTTPS 访问,所以我们需要使用 Requests 库来发送 HTTPS 请求,获取数据后再通过 JSON 库解析数据。以下是查询余票信息的代码:

'''

import requests

def query_ticket():

headers = {

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"

}

response = requests.get("https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2021-12-31&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT", headers=headers, verify=False)

result = response.json()

return result

'''

以上代码中,query_ticket 函数的返回值是一个字典,字典中包含了许多我们需要的键值对,比如列车的发车时间、列车的到达时间、余票情况等。当然,这里有一点需要注意的是,需要在 headers 中添加 User-Agent 字段模拟浏览器的请求,以免被 12306 服务器识别成爬虫而禁止请求。

那么,如何将这些数据进行美观的展示?这时候就需要使用到一些 Python 的 GUI 库了。在这个小项目中,我们将使用 Tkinter 来实现一个简单的 GUI 界面。以下是 GUI 的代码:

'''

import tkinter as tk

root = tk.Tk()

root.title("火车票查询器")

root.geometry("800x600")

label = tk.Label(root, text="火车票查询器")

label.pack()

root.mainloop()

'''

以上代码中,我们首先需要导入 Tkinter 库,实例化一个 Tk 类来创建窗口,使用 title 方法设置窗口标题,使用 geometry 方法给定窗口的尺寸,然后创建一个 Label 对象来显示文字。

综上所述,我们使用 Python 编写 12306 火车票查询器的过程可分为两步:通过 Requests 库发送 HTTPS 请求获取数据,通过 GUI 库将数据进行展示。这个小项目可以加深我们对 Python 基础知识的理解,也可以为实际生活带来实际的便捷。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行