python3 + selenium 强智教务 抢课脚本 #当然是捡漏(是真的劳火(华东理工大学 某ecust(暂时只能抢跨专业、跨年级、公选))

需提前装好chrome浏览器,python3,selenium等库,以及chromedriver,详细教程请自行百度!!

代码

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from time import sleep
chrome_options = webdriver.ChromeOptions()


class Qiangke(object):
    login_url = "https://inquiry.ecust.edu.cn/jsxsd/view/jzdl/index_jzdl.jsp"  #登录页面,我这里是华理的家长端,需要输入学号姓名身份证,当然也可以自行改为学生端的连接,对应项改为学号密码即可
    initmy_url = 'https://inquiry.ecust.edu.cn/jsxsd/view/jzdl/jzMain.jsp' #这里填写登录后的初始页面
	select_url = "https://inquiry.ecust.edu.cn/jsxsd/xsxk/xsxk_index?jx0502zbid=B87E6388B7A64FD3907324EC1F4C7004"  #这里填写抢课链接

    xh = u"10182308"  #填写学号
    name = '啊啊啊'   #填写名字
    sfz = '123456789123456789' #填写身份证

    _user = "[email protected]" #填写你的邮箱(用于发邮件提醒抢课成功)
    _pwd = "abcdefgh"  #授权码,在邮箱里获得
    _to = "[email protected]" #收件人邮箱,可以写自己的,帮别人抢课就发别人的

    course_category = u'专业内跨年级选课'  # 这里填写选课种类,这个脚本只能抢跨年级,跨专业,和公选,需输入完整的名字如“专业内跨年级选课”,“跨专业选课”,“公选课选课”
    class_name = u"物联网"  #这里输入你想抢的课的名字(关键字即可)
    teacher_name = u"黄如"  #这里输入你想抢的课的老师的名字

    def __init__(self):
        print("开始抢课")

    def login(self):
        self.driver.get(self.login_url)
        self.driver.find_element_by_id("xh").send_keys(self.xh)
        self.driver.find_element_by_id("xm").send_keys(self.name)
        self.driver.find_element_by_id("id_card").send_keys(self.sfz)
        print("等待验证码,自行输入....")
        while True:
            if self.driver.current_url != self.initmy_url:
                sleep(1)
            else:
                break

    def send(self, text, send_msg=False):
        import smtplib
        from email.mime.text import MIMEText

        msg = MIMEText(text)
        msg["Subject"] = "你选课成功了!"
        msg["From"] = self._user
        msg["To"] = self._to
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(self._user, self._pwd)
        s.sendmail(self._user, self._to, msg.as_string())
        s.quit()

    def start(self):
        self.driver = webdriver.Chrome(chrome_options=chrome_options)
        self.login()
        self.driver.get(self.select_url)
        self.driver.find_element_by_link_text(self.course_category).click()

        self.driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="mainFrame"]'))
        self.driver.find_element_by_id('kcxx').send_keys(self.class_name)
        self.driver.find_element_by_id('skls').send_keys(self.teacher_name)
        self.driver.find_element_by_xpath("/html/body/div[2]/input[5]").click()

        cnt = 1
        while True:
            try:
                self.driver.find_element_by_link_text('选课').click()
            except:
                self.driver.switch_to.default_content()
                self.driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="mainFrame"]'))
                self.driver.find_element_by_link_text('选课').click()

            dig_alert = self.driver.switch_to.alert
            dig_alert.accept()
            text = dig_alert.text
            if text != '选课失败:此课堂选课人数已满!' and text != '':
                self.send('{}  选课成功'.format(self.class_name))
                break
            elif text == '':
                dig_alert.accept()


            cnt += 1
            if cnt % 200 == 0:
                print(cnt)


if __name__ == "__main__":
    qiangke = Qiangke()
    qiangke.start()

使用流程

  1. 将脚本内信息填好改好
  2. 运行脚本,此时会打开chrome并且打开登录页,脚本会自行填写学号姓名身份证等信息,需要等你填写验证码
    python3 + selenium 强智教务 抢课脚本 #当然是捡漏(是真的劳火(华东理工大学 某ecust(暂时只能抢跨专业、跨年级、公选))_第1张图片
    3.填写好后登录,即可自动跳转至抢课页面进行抢课,这时即可等待捡漏成功(成功后会有邮件提醒
    python3 + selenium 强智教务 抢课脚本 #当然是捡漏(是真的劳火(华东理工大学 某ecust(暂时只能抢跨专业、跨年级、公选))_第2张图片

你可能感兴趣的:(python3 + selenium 强智教务 抢课脚本 #当然是捡漏(是真的劳火(华东理工大学 某ecust(暂时只能抢跨专业、跨年级、公选)))