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()

原文地址:https://www.cnblogs.com/xubin97/p/10331558.html

时间: 2024-12-11 23:04:59

100行代码教你教务系统自动抢课!的相关文章

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp

iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果

8行代码教你搞定导航控制器全屏滑动返回效果 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view

不到100行代码实现一个推荐系统

似乎咱的产品七,八年前就想做个推荐系统的,就是类似根据用户的喜好,自动的找到用户喜欢的电影或者节目,给用户做推荐.可是这么多年过去了,不知道是领导忘记了还是怎么了,连个影子还没见到. 而市场上各种产品的都有了推荐系统了.比如常见的各种购物网站京东,亚马逊,淘宝之类的商品推荐,视频网站优酷的的类似影片推荐,豆瓣音乐的音乐推荐...... 一个好的推荐系统推荐的精度必然很高,能够真的发现用户的潜在需求或喜好,提高购物网詀的销量,让视频网站发现用户喜欢的收费电影... 可是要实现一个高精度的推荐系统不

不到100行代码实现一个简单的推荐系统

似乎咱的产品七,八年前就想做个推荐系统的,就是类似根据用户的喜好,自动的找到用户喜欢的电影或者节目,给用户做推荐.可是这么多年过去了,不知道是领导忘记了还是怎么了,连个影子还没见到. 而市场上各种产品的都有了推荐系统了.比如常见的各种购物网站京东,亚马逊,淘宝之类的商品推荐,视频网站优酷的的类似影片推荐,豆瓣音乐的音乐推荐...... 一个好的推荐系统推荐的精度必然很高,能够真的发现用户的潜在需求或喜好,提高购物网詀的销量,让视频网站发现用户喜欢的收费电影... 可是要实现一个高精度的推荐系统不

GameBuilder开发游戏应用系列之100行代码实现贪吃蛇

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-801422234293697 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-801422234293697 微信扫描: 运行截图: 除了重力感应游戏,GameBuilder开发传统的游戏也毫不逊色,作为一个怀旧的人,总是对这类游戏情有独钟. 贪吃蛇主要靠一个[UICanvas]来实现,前面一片博客GameB

用JavaCV改写“100行代码实现最简单的基于FFMPEG+SDL的视频播放器 ”

FFMPEG的文档少,JavaCV的文档就更少了.从网上找到这篇100行代码实现最简单的基于FFMPEG+SDL的视频播放器.地址是http://blog.csdn.net/leixiaohua1020/article/details/8652605. 用JavaCV重新实现并使用opencv_highgui进行显示. 1 import com.googlecode.javacpp.IntPointer; 2 import com.googlecode.javacpp.Pointer; 3 im

基于zbus网络通讯模块实现的MySQL透明代理(<100行代码)

项目地址 https://git.oschina.net/rushmore/zbus 我们上次讲到zbus网络通讯的核心API: Dispatcher -- 负责-NIO网络事件Selector引擎的管理,对Selector引擎负载均衡 IoAdaptor -- 网络事件的处理,服务器与客户端共用,负责读写,消息分包组包等 Session -- 代表网络链接,可以读写消息 实际的应用,我们几乎只需要做IoAdaptor的个性化实现就能完成高效的网络通讯服务,今天我们将举例说明如何个性化这个IoA

100行代码实现简单目录浏览器制作

给大家分享使用Lae软件开发工具开发小应用程序的过程,希望大家喜欢! 界面部分我们用lae软件开发工具实现,无需写代码,业务逻辑部分使用Lae软件开发平台自带的LuaIDE编辑器,使用100行lua代码完成简单目录浏览器的制作. lae软件下载地址: https://github.com/ouloba/laetool.git lae软件下载地址(国内):https://pan.baidu.com/s/1ckMy0Q 相关视频: http://www.tudou.com/listplay/aly7

100 行代码实现的 JavaScript MVC 样式框架

介绍 使用过 JavaScript框架(如 AngularJS, Backbone 或者Ember)的人都很熟悉在UI(用户界面,前端)中mvc的工作机理.这些框架实现了MVC,使得在一个单页面中实现根据需要变化视图时更加轻松,而模型-视图-控制器(mvc)的核心概念就是:处理传入请求的控制器.显示信息的视图.表示业务规则和数据访问的模型. 因此,当需要创建这样一个需要在单个页面中实现切换出不同内容的应用时,我们通常选择使用上述框架之一.但是,如果我们仅仅需要一个在一个url中实现视图切换的框架