使用 python 抢火车票的步骤如下:安装 requests 和 beautifulsoup4 库。获取 12306 网站的 cookies。查询车票信息。当有车票可用时,提交订单。
Python抢火车票
如何使用 Python 抢火车票
1. 安装必要的库
首先,你需要安装以下库:
立即学习“Python免费学习笔记(深入)”;
requests
beautifulsoup4
schedule
2. 获取cookies
你将需要一份有效的 12306 网站 cookies。你可以使用以下代码获取它:
import requests
url = 'https://kyfw.12306.cn/otn/leftTicket/init'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
response = requests.get(url, headers=headers)
cookies = response.cookies
3. 查询车票
接下来,你需要查询车票信息。你可以使用以下代码:
import schedule
from_station = '北京'
to_station = '上海'
train_date = '2022-06-10'
def query_tickets():
url = 'https://kyfw.12306.cn/otn/leftTicket/query'
params = {
'leftTicketDTO.train_date': train_date,
'leftTicketDTO.from_station': from_station,
'leftTicketDTO.to_station': to_station,
'purpose_codes': 'ADULT'
}
response = requests.get(url, params=params, cookies=cookies)
result = response.json()
return result['data']['result']
schedule.every(1).second.do(query_tickets)
4. 提交订单
当有车票可用时,你可以使用以下代码提交订单:
import schedule
def order_tickets():
url = 'https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest'
data = {
'secretStr': '', # 需要填写 secretStr 字段,可以参考官方文档
'train_date': train_date,
'back_train_date': train_date,
'tour_flag': 'dc',
'purpose_codes': '00',
'query_from_station_name': from_station,
'query_to_station_name': to_station,
'undefined': ''
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
response = requests.post(url, data=data, headers=headers, cookies=cookies)
result = response.json()
return result
schedule.every(1).second.do(order_tickets)
注意:
- 该代码只是一个示例,你可能需要根据你的实际情况进行修改。
- 使用该代码可能会违反 12306 网站的条款和条件,请谨慎使用。