注意事项            
【!注意!】技术指导专用文章,实在不会搭建再点击此处 【!注意!】
12306抢票脚本,学生票(2024-04-05)清明节为了买票纯手写

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

注意事项
🔥 最新推出:一天会员!
专为下载资源打造,超值体验,立即加入!
了解详情
✨ 新推出:兑换码!

进入小程序,获得大额兑换码!最高减100%

小程序二维码

扫码进入小程序

没有Python编程基础的人看这一篇:抢票软件,不用自己运行脚本了(适应新版网站)

12306官网更新后下方代码有较多bug,不建议使用下方代码,建议使用上方新版软件(自适应网站更新(无论网站如何更新,软件自适应))

 

图片[1]-12306抢票脚本,学生票(2024-04-05)清明节为了买票纯手写-资源吧

 

一个清明假期,差点把我困在家里面出不来,没有车票,好在今天博主写了一个抢票脚本,现场演示:

完整链接在下方:

dab976e6501a49968d494a9f68162b8a

导入必要的库

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)

用户登录

扫码登录

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

f25b63c98579428d921ed2aab8fab5f6

信息你在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)

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

9b0f382cc79449daad303845e99c26c6

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

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

也就是这一串代码:

16f9db363a9044db8136c5a37602bb5c

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

6aac30460b994b73b70b29e89e1bc7de

这样就换好了:

7597c72473de4ccc84e9f66403da1b1e

9c6f45f661464f1a8e95b222bef08908

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

32c18baa8e5e4386accb2d79a516e807

 
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)

根据车次情况预定车票

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"已点击确认按钮")

完整代码:https://blog.zibovip.top/?p=204

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容