用Python抢到回家的车票【无车必学】

本文介绍了一位程序员使用Python开发的抢票助手,该助手紧随12306网站更新,支持候补功能。项目在GitHub上备受关注,详细讲述了配置和使用方法,帮助程序员解决春节回家购票难题。同时回顾了程序员为抢票编写代码的历史,如iFish的订票助手曾引发GitHub流量激增事件。
摘要由CSDN通过智能技术生成

 

 

春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票。为此今天就给大家分享用python如何快速实现:

 

据悉,今年春运期间,全国铁路发送旅客人次同比将增长 8.0%。达到 4.4 亿人次。

2020 年铁路春运自 1 月 10 日开始,2 月 18 日结束,共 40 天,节前 15 天,节后 25 天,今年的 12 月 12 日春运火车票正式发售。

即使再难,家还是要回的,票还是要抢的,所以这一周,GitHub 上用 Python 抢票的项目又重回 Top 榜单。

这个抢票小助手诞生于 2017 年,作者是文贤平/文先森 (testerSunshine) ,目前这个项目标星已经将近 20000,可想而知程序员们回家的愿望是多么的迫切!,另外如果你对python不熟,刚学不久,建议可以先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,都会解决哦!加下来继续操作:

 

史上最强抢票助手,紧随 12306 更新。。

 

从项目的更新日志可以看到,这个项目的第一次更新是在 2017.5.13,之后一共进行了 32 次更新,其中大部分是作者本人,也有一些开发者提供了支持。

 

这个项目基本上是紧随着 12306 网站的功能更新而更新的,比如去年春运增加的候补功能,在票卖完的情况下预先付款,等其他人退票之后自动补上。

 

该项目也在今年加入了这个功能:

目前这个抢票小助手基本支持 12306 的所有主要功能,包括邮件通知、智能候补等。

 

这个抢票小助手堪称史上最强的抢票小助手了,作者在项目后面提供了交流群,9 个群如今已经有 7 个满了,可想而知这是多么强大的力量。

句句代码,只为抢一张回家的票

 

作者为了这个项目还是费了不少心血的,首先我们来看一下作者的思路:

思路并不复杂而且相当紧凑。首先需要下载一个机器学习模型完成对 12306 验证码的自动识别,该模型需放于项目根目录中。

 

①模型下载链接:

 

https://pan.baidu.com/s/1rS155VjweWVWIJogakechA  
密码:bmlm

 

②Git 仓库下载:

 

使用Python的selenium库来抢动车票是可行的。首先,你需要安装selenium库,并且安装与你使用的浏览器相对应的webdriver(如ChromeDriver)。然后,你可以参考以下步骤来使用selenium库来抢动车票: 1. 导入所需的库: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ``` 2. 创建一个WebDriver对象并打开浏览器: ```python driver = webdriver.Chrome() # 这里使用Chrome浏览器,需要先安装ChromeDriver ``` 3. 使用webdriver访问12306的登录页面: ```python driver.get('https://kyfw.12306.cn/otn/index/init') ``` 4. 等待页面加载完成并进行登录操作: ```python # 等待登录按钮加载完成 login_button = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'loginSub')) ) # 执行登录操作,具体的登录逻辑根据实际情况进行修改 # 输入用户名和密码 driver.find_element(By.ID, 'username').send_keys('your_username') driver.find_element(By.ID, 'password').send_keys('your_password') # 点击登录按钮 login_button.click() ``` 5. 进行抢票操作,例如选择出发地、目的地、日期等信息: ```python # 等待车票查询页面加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'fromStationText')) ) # 选择出发地、目的地和日期 driver.find_element(By.ID, 'fromStationText').send_keys('北京') driver.find_element(By.ID, 'toStationText').send_keys('上海') driver.find_element(By.ID, 'train_date').clear() driver.find_element(By.ID, 'train_date').send_keys('2021-01-01') ``` 6. 点击查询按钮进行车票查询: ```python driver.find_element(By.ID, 'query_ticket').click() ``` 7. 对查询结果进行处理,判断是否有可用的车票: ```python # 等待查询结果加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, 'no-ticket')) ) # 判断是否有车票 no_ticket_element = driver.find_element(By.CLASS_NAME, 'no-ticket') if no_ticket_element.is_displayed(): print('没有可用的车票') else: print('有可用的车票') # 在这里可以进行抢票操作,如选择座位、提交订单等 ``` 请注意,以上代码只是一个示例,具体的抢票操作需要根据实际情况进行修改。同时,请确保你已经安装了selenium库和对应的浏览器驱动器,并且所用的代码与你所使用的网站结构和元素匹配。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值