你,还在为抢不到课而烦恼吗?每当抢课时,服务器崩溃了,你也崩溃了,最后要么抢不到,要么选到的是别人挑剩下的,此时的你非常渴望,渴望抢课时总是能快人一步,看到这里,恭喜你,来对地方了。
废话少说,上链接。
(23条消息) ZUCC 正方教务系统 抢课脚本 抢课流程实现_教务系统抢课脚本_小y丶我又可以了的博客-CSDN博客
【手把手带你写抢课脚本】③完整代码展示_哔哩哔哩_bilibili
利用爬虫的相关知识,直接绕开登录界面和选课界面,对选课按钮进行request请求,理论上,抢课只需3秒,你能打败99.99%的人。
一、基于爬虫的抢课代码
基于爬虫的抢课代码不便展示,https://pan.baidu.com/s/1iG5phlayXKN1bwSkPY-nhg?pwd=ek4f
python基础爬虫+数据解析
建议爬取课程id和教学班id
不同学校使用的抢课系统不一样,代码不能直接使用,需要懂爬虫技术的人修改代码
参考下面链接的代码
python抢课_python实现强智科技教务系统抢课(两种方法)_weixin_39522486的博客-CSDN博客
二、基于selenium自动捡漏的抢课代码
此代码只适合人少的时候捡漏,用于二次抢课,比手抢快一些
from time import sleep
from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import Edge
import datetime
from selenium.webdriver.common.action_chains import ActionChains
#-------------*-*-*-*-抢课时间-*-*-*-*-------------
pre_time="2023-05-03 12:29:59.888888"
#-------------*-*-*-*-你的账号-*-*-*-*-------------
user="*********"
#-------------*-*-*-*-你的密码-*-*-*-*-------------
pass_word="***********"
#-------------*-*-*-*-抢课顺序-*-*-*-*-------------
book=["防控计算机病毒","计算机系统故障诊断"]
edge_options = EdgeOptions()
edge_options.use_chromium = True
edge_options.add_argument('--disable-blink-features=AutomationControlled')
bro = Edge(executable_path='msedgedriver.exe',options=edge_options)
bro.maximize_window()#最大化浏览器
bro.get('http://10.3.132.10/jwglxt/xtgl/login_slogin.html') #网站页面
bro.implicitly_wait(3)#隐式等待1秒
sleep(1)
#登录
bro.find_element_by_id('yhm').send_keys(user)
sleep(1.5)
bro.find_element_by_id('mm').send_keys(pass_word)
sleep(1.5)
bro.find_element_by_id('dl').click()
sleep(3)
#进入等待界面
el=bro.find_element_by_xpath('//*[@id="cdNav"]/ul/li[3]') #选课
ActionChains(bro).move_to_element(el).click().perform()
sleep(1)
ell=bro.find_element_by_xpath('//*[@id="cdNav"]/ul/li[3]/ul/li[3]/a') #自主选课
ActionChains(bro).move_to_element(ell).click().perform()
bro.switch_to.window(bro.window_handles[-1])
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 时间到的话就刷新
if now >= pre_time:
bro.refresh() #刷新
bro.switch_to.window(bro.window_handles[-1])
bro.implicitly_wait(15)
#-------是否手动重新登录-------
for lessen in book:
while True:
try:
#输入课程
bro.find_element_by_xpath('//*[@class="input-group"]/input').click()
bro.find_element_by_xpath('//*[@class="input-group"]/input').clear()
bro.find_element_by_xpath('//*[@class="input-group"]/input').send_keys(lessen)
sleep(1.5)
#搜索课程
#bro.find_element_by_xpath('//*[@id="searchBox"]/div/div[1]/div/div/div/div/span/button[1]').click()
bro.find_element_by_name('query').click()
break
except:
print("找不到搜索按钮,请等一等")
bro.implicitly_wait(2)
#-------------选课----------
while True:
try:
bro.find_element_by_xpath('//*[@class="an"]/button').click() #
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print(f"已经选了 :{lessen}")
break
except:
print("选课按钮发生错误")
#查看是否满了
if(bro.find_element_by_class_name('jxbrl').text==bro.find_element_by_class_name('jxbrs').text):
break
bro.implicitly_wait(3)
sleep(5)
#输入名称
bro.find_element_by_xpath('//*[@id="searchBox"]/div/div[1]/div/div/div/div/input').send_keys()
#有余量
bro.find_element_by_xpath('//*[@id="searchBox"]/div/div[3]/div[13]/div/div/ul/li[1]')
#查询
bro.find_element_by_xpath('//*[@id="searchBox"]/div/div[1]/div/div/div/div/span/button[1]')
#选课
bro.find_element_by_xpath('//*[@class="an"]/button')
# bro.execute_script('window.scrollBy(0,250)') # 滚动
print("已经抢完啦,抢到的时间:" + now)
print("恭喜你!")
break
print('时间未到:'+now)
使用此代码需要学习selenium自动化 的使用:Python + Selenium Web自动化 2022更新版教程 自动化测试 软件测试 爬虫_哔哩哔哩_bilibili
包括在python中配置selenium的浏览器环境