PHP前端开发

python自动抢火车票

百变鹏仔 3天前 #Python
文章标签 火车票
Python自动抢票脚本是一个程序,利用第三方库模拟人工操作浏览器,包括:加载页面并输入抢票信息。查询余票,获取可售车次和余票情况。自动提交订单,一旦有符合条件的车次和余票,脚本立即完成抢票。

Python自动抢火车票

随着火车票预售时间的临近,抢票大战也愈演愈烈。对于手速慢、网速差的普通用户来说,手动抢票基本无望。而Python自动抢票脚本成为了他们的救命稻草。

脚本原理

Python自动抢票脚本本质上是一个程序,使用了Selenium、BeautifulSoup等第三方库来模拟人工操作浏览器。

  1. 加载页面:脚本先加载火车票预订页面,并模拟用户的输入信息,如出发地、目的地、出发日期等。
  2. 查询余票:脚本发送查询请求,获取当前可售车次和余票情况。
  3. 自动提交:一旦有符合条件的车次和余票,脚本自动提交订单,完成抢票。

所需工具

代码示例

import timeimport requestsfrom selenium import webdriverfrom bs4 import BeautifulSoup# 设置抢票信息departure_station = "北京"arrival_station = "上海"departure_date = "2023-06-01"# 初始化浏览器驱动browser = webdriver.Chrome()browser.get("https://kyfw.12306.cn/otn/leftTicket/init")# 输入抢票信息origin_input = browser.find_element_by_id("fromStationText")origin_input.clear()origin_input.send_keys(departure_station)destination_input = browser.find_element_by_id("toStationText")destination_input.clear()destination_input.send_keys(arrival_station)date_input = browser.find_element_by_id("train_date")date_input.clear()date_input.send_keys(departure_date)# 查询余票query_button = browser.find_element_by_id("query_ticket")query_button.click()# 循环查询余票while True:    # 获取当前页面信息    html = browser.page_source    soup = BeautifulSoup(html, "lxml")    # 解析余票信息    tickets = soup.find_all("tr", class_="ticket-info")    for ticket in tickets:        seat_type = ticket.find("td", class_="seat-type").text        left_tickets = ticket.find("td", class_="lf").text        if left_tickets != "无":            # 找到余票,直接提交订单            order_button = ticket.find("td", class_="order")            order_url = order_button.find("a")["href"]            browser.get(order_url)            break        time.sleep(1)  # 间隔1秒查询一次

注意要点