用python写一个12306自动购票的代码
时间: 2023-08-31 15:29:58 浏览: 114
T12306-master.zip
### 回答1:
首先,在写12306自动购票代码之前,您需要了解12306的购票流程,包括如何查询车次信息、如何选择座位等。
下面是一个简单的12306自动购票代码示例,帮助您了解购票流程:
```python
import requests
# 填写您的12306登录账号和密码
username = 'your_username'
password = 'your_password'
# 登录12306
login_url = 'https://kyfw.12306.cn/passport/web/login'
form_data = {
'username': username,
'password': password,
}
response = requests.post(login_url, data=form_data)
# 检查登录是否成功
if response.status_code != 200:
print('登录失败')
exit()
# 获取登录后的cookies
cookies = response.cookies
# 查询车次信息
query_url = 'https://kyfw.12306.cn/otn/leftTicket/query'
form_data = {
'leftTicketDTO.train_date': '2022-01-01', # 乘车日期
'leftTicketDTO.from_station': 'BJP', # 出发站
'leftTicketDTO.to_station': 'SHH', # 到达站
}
response = requests.get(query_url, params=form_data, cookies=cookies)
# 处理车次信息
train_list = response.json()['data']['result']
for train in train_list:
# 判断是否有符合条件的车次
if train.split('|')[3] == 'G123': # 车次为G123
# 获取车次信息
secret_str = train.split('|')[0] # 加密字符串
query_left_ticket_url = train.split('|')[26] # 查询余票的url
break
else:
print('未找到符合条件的车次')
exit()
# 订
### 回答2:
12306自动购票的代码可以使用Python编写,通过模拟用户登录、查询、选择座位、提交订单等操作,完成自动购票的流程。下面是一个简单的示例代码:
```python
import requests
# 用户登录
def login(username, password):
login_url = 'http://www.12306.cn/login'
data = {
'username': username,
'password': password
}
response = requests.post(login_url, data=data)
# 判断登录是否成功
if response.status_code == 200:
print('登录成功')
else:
print('登录失败')
# 查询车票
def search_train(from_station, to_station, date):
search_url = f'http://www.12306.cn/search?from_station={from_station}&to_station={to_station}&date={date}'
response = requests.get(search_url)
# 处理查询结果
# TODO
# 选择座位
def choose_seat(train_no, seat_type):
seat_url = f'http://www.12306.cn/seat?train_no={train_no}&seat_type={seat_type}'
response = requests.get(seat_url)
# 处理座位信息
# TODO
# 提交订单
def submit_order(train_no, seat_type):
order_url = 'http://www.12306.cn/submit_order'
data = {
'train_no': train_no,
'seat_type': seat_type
}
response = requests.post(order_url, data=data)
# 判断订单是否提交成功
if response.status_code == 200:
print('订单提交成功')
else:
print('订单提交失败')
# 示例代码主函数
def main():
# 用户输入登录信息
username = input('请输入用户名:')
password = input('请输入密码:')
# 用户登录
login(username, password)
# 用户输入查询信息
from_station = input('请输入出发地:')
to_station = input('请输入目的地:')
date = input('请输入出发日期:')
# 查询车票
search_train(from_station, to_station, date)
# 用户选择座位
train_no = input('请输入车次:')
seat_type = input('请输入座位类型:')
# 选择座位
choose_seat(train_no, seat_type)
# 提交订单
submit_order(train_no, seat_type)
# 调用主函数
if __name__ == '__main__':
main()
```
以上代码仅为示例,具体实现需要根据12306网站的接口文档进行进一步开发和调试,并根据实际运行情况进行相应的异常处理和错误处理。
阅读全文