12306抢票脚本,学生票(2024-04-05)清明节为了买票纯手写

一个清明假期,差点把我困在外面回不来,没有车票,好在今天博主写了一个抢票脚本,现场实操:在pycharm里面直接运行就可以:
下方有完整代码链接!!!!!!!!

提醒:也可以抢一下未发售的票,里面定义了函数:未买到票或者为查询到票自动刷新,查票。

对于没有Python基础的人看这一篇:最新12306抢票软件已发布,在也不用自己运行脚本了-CSDN博客
票未发售时,可以先挂着,让它自己刷新着抢票!

完整链接在下方:
导入必要的库

      

  from selenium.webdriver.common.by import By
         
        from selenium.webdriver.common.keys import Keys
         
        from selenium import webdriver
         
        import time


     
    反爬虫处理(你懂得)
     
       

 script = 'Object.defineProperty(navigator,"webdriver",{get:()=>undefined,});'
         
        driver.execute_script(script)

用户登录

扫码登录

输入出发地、目的地和出发日期

信息你在pycharm里面输入就可以,会自动填入网页里面:(左下角填入武汉,网页端自动写入武汉)

        from_station_input = driver.find_element(By.ID, "fromStationText")
         
        from_station_input.send_keys(here_place)
         
        to_station_input = driver.find_element(By.ID, "toStationText")
         
        to_station_input.send_keys(to_place)
         
        date_input = driver.find_element(By.ID, "train_date")
         
        date_input.send_keys(travel_date)

填完之后自动跳转道购票页面:

注意:部分浏览器可能会清楚缓存,换句话说,刚才的登录信息没有了,我直接建议换浏览器,(当然我的名字肯定打码了)

下一步会询问是否为学生:

也就是这一串代码:

如果选择了学生会点击所对应的id,自动切换如下所示:

这样就换好了:

根据车次情况预定车票

    

    def order_ticket():
         
        # 输入想乘坐的火车车次
         
        train_num = input('---输入你想乘坐的火车车次---\n')
         
        train_numbers = driver.find_elements(By.XPATH, '//tbody[@id="queryLeftTable"]/tr[not(@datatran)]')
         
        # 遍历车次信息,寻找目标车次
         
        for train_number in train_numbers:
         
        train_messages = train_number.text.replace('\n', ' ')
         
        train_message = train_messages.split(' ')
         
        if train_num == train_message[0]:
         
        if '有' == train_message[10] or '有' == train_message[9]:
         
        button = train_number.find_element(By.XPATH, './/a[@class="btn72"]')
         
        button.click()
         
        print('预定成功,现在正在选择乘车人')
         
        break
         
        else:
         
        print('正在为你刷新页面,实时更新车票情况')
         
        # 调用刷新页面函数
         
        refresh_search_ticket(train_message, train_number)
         
        break

接下来选择车次,因为选择了学生票,所以这次选二等座:

确认乘车人和座位信息 默认选择第一个人(可以自己修改)

乘车人的话,可以用代码选也可以自己选,

     

   # 点击乘车人信息,默认第一个为本人
         
        driver.find_element(By.ID, 'normal_passenger_id').click()
         
        # 点击确认按钮
         
        confirm_button = driver.find_element(By.ID, 'dialog_xsertcj_ok')
         
        confirm_button.click()
         
        # 选择座位
         
        for seat, xpath in seats.items():
         
        driver.find_element(By.XPATH, xpath).click()
         
        print(f"已点击座位 {seat}")
         
        confirm_button = WebDriverWait(driver, 10).until(
         
        EC.element_to_be_clickable((By.ID, "qr_submit_id"))
         
        )
         
        confirm_button.click()
         
        print(f"已点击确认按钮")

完整代码:12306抢票脚本(2024-04-05)清明节为了买票纯手写-资源吧——资源下载

  • 39
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eric,会点编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值