【Python】12306爬虫抢票脚本

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解析功能解析返回的数据。你可以根据你的具体需要进行修改和扩展。

但是请注意,在进行抢票操作时,有可能会遇到一些反爬措施。为了更好地模拟真实用户行为,建议你使用专业的抢票工具或者第三方库,比如RoboBrowserSelenium,这些工具可以帮助你处理验证码、登录和提交订单等复杂的操作。

你可能感兴趣的:(python,爬虫,开发语言)