这篇教程Python实现12306自动抢火车票功能写得很实用,希望能帮到您。 大家有没有这种感觉,一到国庆、春节这种长假,抢火车票就非常困难?各大互联网公司都推出抢票服务,只要加钱给服务费就可以增加抢到票的几率。有些火车票代售网点和一些加速买票软件,说你只要给100元服务费就可以优先帮忙抢到票。本文和你一起探索抢票软件背后的原理。
一、效果展示在正式进入代码讲解之前,先来看下本文的实现效果。 如果不是为了演示效果,直接在最后确定阶段加一个延时点击确定,应该不到45秒可以锁定一张票,只要在30分钟之内付款即可。
二、代码详解本小节会详细解锁抢票软件是如何模拟登录网站,进行自动买票的。为了更清晰地给大家展示,部分代码没有写成函数,直接裸代码运行,让需要买票的朋友可以自己应用软件进行购票。
1 导入库首先导入本文需要加载的库,如果你有些库还没有安装,导致运行代码时报错,可以在Anaconda Prompt中用pip方法安装。 import jsonimport timefrom captcha import * from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import waitfrom selenium.webdriver.common.keys import Keysfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.support import expected_conditions as EC#导入库
2 确定好购票基本信息导入库后,在python代码中填写你购票的基本信息。 purpose = 'ADULT' #购买成人票,如果是学生票,需调整代码names = ['谢朝阳'] #填写购票人姓名date = '2021-09-21' #填写购票日期start_station = '深圳' #购票出发站end_station = '长沙南' #购票目的站password = '11234567xyz' #登录12306的秘密username ='xiezhaoyang122700' #登录12306的账号trains = ['G1004', 'G80', 'G6028', 'G6182', 'G6016'] #你想买的班次#填写基本信息 本文预订的是2021年9月21日从深圳到长沙南的高铁票,你可以根据自己的实际需要进行调整。由于有些班次的时间过早或过晚,买了也很不方便,所以可以在trains中挑选出你满意的班次进行购票。在这里需要提醒大家,我之前在尝试代码时碰到的坑,那就是时间中如果有个位数要在前面填0。比如2021年9月2日,你在填写购票日期date时要写成'2021-09-02',否则在运行代码时日期总是填不进去。
3 登录12306确定好购票的基本信息后,就可以应用python模拟登录12306了,代码如下: options = webdriver.ChromeOptions()options.add_argument("--disable-blink-features=AutomationControlled") browser = webdriver.Chrome(options=options)browser.maximize_window()login_url = 'https://kyfw.12306.cn/otn/resources/login.html'#ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'browser.get(login_url)time.sleep(0.5)wait.WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.CLASS_NAME,'login-hd-account'))).click()input_name = browser.find_element_by_id('J-userName')input_pd = browser.find_element_by_id('J-password')input_name.send_keys(username)input_pd.send_keys(password)login = browser.find_element_by_id('J-login')login.click()#登录12306 整体思路是: 基于Python Dash库制作酷炫的可视化大屏 python调用bash |