• 基于大数据的学习资源推送系统


    作者主页:IT研究室✨
    个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
    ☑文末获取源码☑
    精彩专栏推荐⬇⬇⬇
    Java项目
    Python项目
    安卓项目
    微信小程序项目

    一、开发环境

    • 开发语言:Python
    • 数据库:Hive
    • 系统架构:Hadoop
    • 后端:Spark
    • 前端:Vue

    二、系统功能模块

    • 角色:用户、管理员
    • 功能:
      用户
      学习视频、新闻资讯;
      管理员
      用户管理、学习视频管理、学习类型管理、新闻资讯管理、数据统计分析。

    三 、系统界面展示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、部分代码设计

    #构造浏览器
    option = webdriver.ChromeOptions()
    option.add_argument("--mute-audio")#浏览器静音
    option.add_argument('--ignore-certificate-errors')#忽略证书错误
    option.add_experimental_option("detach", True)#防止浏览器自动关闭
    bro: WebDriver = webdriver.Chrome('d:\chromedriver\chromedriver.exe', options=option)
    #定义登录页面
    home_url = ('https://www.sqgj.gov.cn/video_learning/education/new_index.html')
    #打开登录页面
    bro.get (home_url)
    time.sleep(3)
    bro.maximize_window()#最大化窗口
    time.sleep(3)
    #输入用户名
    bro.find_element('id', 'new_mobilePhoneLogin').send_keys('13992554268')
    time.sleep(1)
    #输入密码
    bro.find_element('id', 'new_passWordLogin').send_keys('030820')
    time.sleep(1)
    #开始判断是否登录成功
    url= (bro.current_url)#读取当前网页地址,
    while url == (home_url) : #如果是登录页面表示没有登录成功
        bro.find_element('id','getIdentifyCode').click()
        time.sleep(3)
        yzm=bro.find_element('id', 'getIdentifyCode')
        bro.save_screenshot('a.png')
        location = yzm.location
        left = location['x']#获取验证最左边位置
        top = location['y']#获取验证码上边位置
        right = left + yzm.size['width']#获取验证码右边位置
        bottom = top + yzm.size['height']#获取验证码下边位置
        open_img = Image.open('a.png')#打开屏幕截图
        open_img = open_img.crop((left, top, right, bottom))#使用获取到的位置剪切图片
        open_img.save('b.png')#保存图片
        def initTable(threshold=30):
            table = []
            for i in range(256):
                if i < threshold:
                    table.append(0)
                else:
                    table.append(1)
            return table
        def yzmocr(yzmtp) :
            im = Image.open(yzmtp)
            im = im.convert('L')#去色
            binaryImage = im.point(initTable(), '1')
            im1 = binaryImage.convert('L')
            im2 = im1.convert('1')
            asd = pytesseract.image_to_string(im2, config="-c tessedit_char_whitelist=0123456789")
            return asd
        yzm_txt=yzmocr('b.png')
        time.sleep(1)
        bro.find_element('name','new_identifyCode').clear()
        time.sleep(1)
        bro.find_element('name','new_identifyCode').send_keys(yzm_txt)
        time.sleep(1)
        url= (bro.current_url)#更新当前网页地址
        time.sleep(1)
    else:
        time.sleep(0.5)
    i=0
    while i<20 :
        i=i+1
        print(i)
        #刷新第一个页面
        windows = bro.window_handles
        bro.switch_to.window(windows[0])
        bro.refresh()
        time.sleep(5)
        bro.find_element('class name','reStudy').click()#点击当前页面第一个课程
    
        #切换到视频窗口
        time.sleep(3)
        windows = bro.window_handles
        # 切换到当前最新打开的窗口
        bro.switch_to.window(windows[-1])
        time.sleep(3)
        #进入课程选择视频页面
        #学习过的视频元素显示鼠标指针,没有学习过的显示为手指,未学习的视频有style="cursor:pointer"属性。
        bro.find_element('xpath','//*[@style="cursor:pointer;"]').click()
        time.sleep(3)
        windows = bro.window_handles
        # 切换到当前最新打开的窗口
        bro.switch_to.window(windows[-1])
        time.sleep(3)
        #切换到弹出窗口
        bro.switch_to.frame('playResourceFrame')
        #判断窗口类型,再执行相应的指令
        try:
            bro.find_element('class name','user_choise').click()#开始播放
        except NoSuchElementException:
            pass
        try:
            bro.find_element('id','beginStudyButton').click()#开始播放
        except NoSuchElementException:
            pass
        # try:
        #     bro.find_element('id','toPlay').click()#开始播放,这种格式是自动播放,如果直接点击会'element not interactable'报错
        #     time.sleep(1)
        # except NoSuchElementException:
        #     pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    五、论文参考

    在这里插入图片描述

    结语

    大家可以帮忙点赞、收藏、关注、评论啦~
    源码获取:私信我

    精彩专栏推荐⬇⬇⬇
    Java项目
    Python项目
    安卓项目
    微信小程序项目

  • 相关阅读:
    Ubuntu 发布 qt 程序(c++)
    这份300页的2020最新java面试题及答案,“吃透”能让你成功定位阿里P9
    Spring Boot面试题
    c++学习27qt(三)Qt自定义控件封装,事件处理,绘画和文件读写
    Java程序部署位windows服务
    Jenkins UI 自动化持续化集成测试
    Netron可视化深度学习网络结构
    nigix安装以及遇到的问题
    现代卷积网络实战系列5:PyTorch从零构建GoogLeNet训练MNIST数据集
    22data 脚本语言基础——Python
  • 原文地址:https://blog.csdn.net/2301_79456892/article/details/132856073