您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python实现12306自动抢火车票功能

51自学网 2022-02-21 10:37:05
  python
这篇教程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

万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。