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:\爬虫实战\12306\chromedriver_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()

猜你喜欢

转载自www.cnblogs.com/xubin97/p/10331558.html