zoukankan      html  css  js  c++  java
  • 100行代码教你教务系统自动抢课!

    帮助广大学生解决抢课问题!自动抢课!!

    100行代码帮你实现抢课!

    代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~

      本项目使用了python中splinter的API接口用来操作页面交互,用了twilio用来给手机发送短信通知抢课成功。

      欢迎大家来全球最大同性交友网站Github:https://github.com/xubin97
    来fork我的菜鸡代码,希望你能来继续增加更多功能,我也会不定期更新功能!

      其中splinter API文档链接:https://splinter.readthedocs.io/en/latest/mouse-interaction.html

    加载各种包,例如splinter、time、twilio包等;
    
    from selenium.webdriver.chrome.options import Options #初始化浏览器
    from splinter.browser import Browser                  #加载splinter与页面交互
    from browsermobproxy import Server                    #浏览器驱动
    from time import sleep                                #时间模块
    from twilio.rest import Client                        #向手机发送信息模块
    
    访问一个页面时可能也会访问其他资源,例如js、css等,这时就要保证我们能获取所有的请求。
    #获取所有网络请求
    server=Server("D:/splinter/browsermob-proxy-2/browsermob-proxy-2.1.4/bin/browsermob-proxy")
    server.start()
    proxy=server.create_proxy()
    
    初始化浏览器,使其能访问其他资源
    chrome_options=Options()
    chrome_options.add_argument('--proxy-server={host}:{port}'.format(host='localhost',port=proxy.port))
    #disable-infobars
    
    书写类,能完成登录、访问、筛选出要抢的课、循环点击选课、抢课成功能发送短信通知你等功能
    class HuoChe(object):
    
        """docstring for Train"""
        driver_name='Chrome'
        executable_path='D:爬虫实战12306chromedriver_win32'
        #用户名 密码
        username = u"your_username"
        passwd = u"your_password"
    
    
        """网址"""
        # 强智教务系统登录URL
        select_url = "http://............"
        # 强智选课页面URL
        login_url = "http://............."
    
    
        def __init__(self):
            print("Welcome To Use The Tool")
    
    #登录函数
        def login(self):
            proxy.new_har()
            self.driver.visit(self.login_url)
            #填充密码
            self.driver.fill("userAccount",self.username)
            #sleep(1)
            self.driver.fill("userPassword",self.passwd)
            print("等待验证码,自行输入....")
            while True:
                if self.driver.url != self.initmy_url:
                    sleep(1)
                else :
                    break
    #抢课成功,利用twilio发送短信的函数
        def send_message():
            account_sid="your_sid"
            auth_token="your_auth_totken"
            client=Client(account_sid,auth_token)
    
            client.messages.create(
            body=u" 抢课成功,请登录查看 ",to="+86你注册twilio时手机号",from_="+twilio分配给你的手机号")
    
    #登录进入,开始抢课
        def start(self):
            #选择模拟的浏览器类型
            self.driver = Browser(driver_name='chrome')
            self.driver.driver.set_window_size(1400,1000)
            self.login()
            self.driver.visit(self.select_url)
            #选择你想抢课的种类,名字或教学方式
            self.driver.find_by_text(u'公选课选课').click()
            class_name=u"网络授课"
    
            #利用iframe表格找到想选的课的选课按钮,然后点击
            #循环点击所有要抢的课的选课id,当抢课成功发送短信通知
            if self.driver.find_by_id('mainFrame'):
                with self.driver.get_iframe('mainFrame') as frame:
                    b=frame.find_by_name("skls")
                    b.fill(class_name)
                    frame.find_by_value(u"查询").click()
    
                    #要抢课的id列表
                    list=[......]
                    #循环抢课,提示抢课成功后发送手机短信通知
                    A=False
                    while A==False:
                        for i in range(len(list)):
                            frame.find_by_id(list[i]).click()
                            with frame.get_alert() as alert:
                                alert.accept()
                                if alert.text=="选课失败:此课堂选课人数已满!":
                                    alert.accept()
                                    continue
                                elif alert.text=="选课成功":
                                    alert.accept()
                                    A=True
                                    print('抢课成功')
                                    #调用发送短信函数
                                    self.send_message()
                                    break
                                else:
                                    alert.accept()
                                    continue
    
    
    if __name__=="__main__":
        train = HuoChe()
        train.start()
    
    

    对啦~

    代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~
  • 相关阅读:
    复利计算--结对1.0,做汉堡,结对2.0
    复利计算1.0,2.0,3.0,4.0,5.0
    2020助教总结
    作业2
    作业一
    linux设置opengl版本
    第一次个人作业
    寒假助教总结
    直播
    2020面向对象程序设计寒假作业3
  • 原文地址:https://www.cnblogs.com/xubin97/p/10331558.html
Copyright © 2011-2022 走看看