import requests
import time
def search_train_tickets(date, from_station, to_station):
# 构造请求URL
url = f"https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={date}&leftTicketDTO.from_station={from_station}&leftTicketDTO.to_station={to_station}&purpose_codes=ADULT"
# 发送GET请求获取车票信息
response = requests.get(url)
if response.status_code != 200:
print("请求失败")
return
# 解析返回的JSON数据
data = response.json()
if 'data' not in data or 'result' not in data['data']:
print("解析数据失败")
return
results = data['data']['result']
if not results:
print("没有找到相关车次")
return
for result in results:
# 解析车次信息
train_info = result.split('|')
train_number = train_info[3] # 车次号码
available_seats = train_info[30] # 可用座位类型(例如:二等座、软卧)
# 输出符合条件的车次信息
print(f"车次:{train_number},可用座位:{available_seats}")
# 设置日期、出发站和到达站
date = "2023-10-19"
from_station = "广州"
to_station = "北京"
# 调用函数搜索车票信息
search_train_tickets(date, from_station, to_station)
抢票是一个涉及到网络请求和数据处理的复杂任务,涉及到官方网站的规则和反爬措施。在这里,我可以给出一个基本的Python爬虫框架,用于向你展示如何编写一个简单的抢票爬虫。但是请注意,这只是一个示例,实际的抢票任务可能需要更复杂的处理逻辑和防封策略。
在这个简单的示例中,我们使用了Python的requests库来发送HTTP请求,并使用requests库内置的JSON解析功能解析返回的数据。你可以根据你的具体需要进行修改和扩展。
但是请注意,在进行抢票操作时,有可能会遇到一些反爬措施。为了更好地模拟真实用户行为,建议你使用专业的抢票工具或者第三方库,比如
RoboBrowser
或Selenium
,这些工具可以帮助你处理验证码、登录和提交订单等复杂的操作。