php中文网

python12306抢票教程

php中文网
本教程提供使用 python 抢购 12306 火车票的详细步骤:安装 python 和相关库。获取 12306 网站的 cookie。登录 12306 网站。查询车次信息。解析车次信息,筛选出有余票的车次。打印有余票的车次信息。根据需要自定义抢票代码。

python12306抢票教程

Python 12306 抢票教程

一、前提条件

  • 安装 Python 3 或更高版本
  • 安装 requests 库(pip install requests)
  • 安装 beautifulsoup4 库(pip install beautifulsoup4)

二、准备工作

  • 获取 12306 网站 cookie(方法见[此文章](https://blog.csdn.net/qq_39728643/article/details/115839667))
  • 注:该教程默认使用 Chrome 浏览器,如果您使用其他浏览器,可能需要自行调整 cookie 获取方法。

三、代码实现

立即学习“Python免费学习笔记(深入)”;

import requests
from bs4 import BeautifulSoup

# 12306 登录页面 URL
login_url = 'https://kyfw.12306.cn/otn/login/init'
# 12306 抢票页面 URL
order_url = 'https://kyfw.12306.cn/otn/leftTicket/init'

# 获取 12306 网站 cookie
cookie = get_cookie()

# 登录 12306 网站
session = requests.Session()
session.get(login_url, cookies=cookie)

# 查询车次信息
params = {
    'leftTicketDTO.train_date': '2023-05-01',
    'leftTicketDTO.from_station': 'BJP',
    'leftTicketDTO.to_station': 'SHH',
    'purpose_codes': 'ADULT'
}
response = session.get(order_url, params=params, cookies=cookie)

# 解析车次信息
soup = BeautifulSoup(response.text, 'html.parser')
train_infos = soup.find_all('tr', class_='odd')

# 循环筛选车次信息
for train_info in train_infos:
    # 判断是否还有余票
    if train_info.find('td', class_='btn-group'):
        # 获取车次信息
        train_num = train_info.find('a', class_='number').text
        start_station = train_info.find('td', class_='station-start').text
        end_station = train_info.find('td', class_='station-end').text
        start_time = train_info.find('td', class_='start-time').text
        end_time = train_info.find('td', class_='arrive-time').text
        # 打印车次信息
        print(f'{train_num} {start_station} -> {end_station} {start_time} -> {end_time}')

# 抢票
# ... (具体抢票代码请自行编写)

以上就是python12306抢票教程的详细内容,更多请关注php中文网其它相关文章!