教你用python实现12306余票查询

1. 介绍

12306余票查询是一个非常常用的功能,可以帮助用户快速查询指定车次、日期的车票余量,便于用户做出出行决策。本文将使用Python编程语言,通过调用12306 API实现余票查询功能。点击此处可以查看12306车站名字典。

2. 代码逻辑

2.1 模块导入

为了实现余票查询功能,我们需要导入一些Python模块:

import requests

import json

我们将使用requests模块来发送HTTP请求,使用json模块来解析返回的JSON数据。

2.2 设置请求参数

余票查询接口需要提供以下参数:

出发站点:from_station

到达站点:to_station

出发日期:date

我们可以使用input函数让用户输入这些参数:

from_station = input("请输入出发站点:")

to_station = input("请输入到达站点:")

date = input("请输入出发日期:")

为了方便调试,我们可以设置默认的参数:

from_station = "北京"

to_station = "上海"

date = "2022-01-01"

2.3 发送请求

现在我们可以发送请求给12306余票查询接口了:

url = "https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=" + date + "&leftTicketDTO.from_station=" + from_station + "&leftTicketDTO.to_station=" + to_station + "&purpose_codes=ADULT"

response = requests.get(url)

response_data = json.loads(response.text)

在上面的代码中,我们构造了一个URL,将参数拼接在URL中,并使用requests.get方法发送GET请求。12306返回的数据是一个JSON字符串,我们可以使用json.loads方法将其转换为字典。

2.4 解析返回数据

现在我们可以提取出票余量信息,并将其展示给用户:

results = response_data["data"]["result"]

for result in results:

result = result.split("|")

train_code = result[3]

seat_type = result[35]

if seat_type != "":

print("车次:" + train_code + ",座位类型:" + seat_type)

在上面的代码中,我们通过查找数据结构中的关键字段(例如“data”、“result”、“3”、“35”等),提取出我们需要的数据,然后进行打印输出。

如果想要提取更多种类的数据,可以根据需要进行扩展。

3. 结语

通过这篇文章的学习,我们学会了使用Python来实现12306余票查询功能。我们介绍了整个代码的逻辑,并一步步讲解了各个代码段的功能和使用方法。希望本文对读者有所帮助!

后端开发标签