selenium和pyautogui实现简单的学习通自动化刷课
创始人
2024-11-13 00:33:54
0

一.整体概述

        最近迷上了python自动化,再加上我学习通还有选修课程没有刷,突发奇想看能不能写一个自动化刷课的python程序。虽然面临被检测的风险,但程序整个制作过程还是收获满满的。

        学习通在每节课播放结束后并不会自动播放下一节课,所以这个自动化实现了自动点击下一节课的功能。

        基本思路是这样的,自动登录(图形验证码需要借助opencv库,学了之后再更新代码);爬取课程时长以控制自动化操作;模拟鼠标,在每节课结束后自动播放下一节课。这样就可在教室上课时,宿舍电脑挂机刷课了。

        整个过程需要用到selenium库和pyautogui库。selenium可以定位html标签元素,可以爬取网页信息,和实现一些鼠标和键盘输入的自动化操作。pyautogui库是也是操控键盘和鼠标的库。你或许会问这不和selenium的功能重复了吗。主要是本博主才疏学浅,学习通用了js动态添加的功能,我没找到办法用selenium定位这种源代码里面没有的标签,所以我借助了pyautogui库里面通过位置操控鼠标的功能,而不是定位标签元素去点击。  

二.实现过程

2.1 selenium库创建一个浏览器的对象

        开始之前需要做点准备工作

        1.安装selenium库和pyautogui库,这就不过多说明了,可以在pycharm里面操作。

        2.使用selenium操控浏览器的时候需要下载对应的浏览器驱动。先去浏览器设置里面找到浏览器的版本,然后去WebDriver官网下载对应的浏览器驱动。下载后要记住放置文件夹的绝对地址,或者下载在工作目录下使用相对地址,接着便可以开始下一步操作了。

from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By  # 初始化浏览器的对象 service = Service('./chromedriver.exe') options = webdriver.ChromeOptions()  browser = webdriver.Chrome(service=service, options=options) 

2.2 实现登录过程

        1.首先获得课程url,这个根据自己需求,去自己获取。

        2.我这里最大化了浏览器窗口,这是为了后续控制鼠标的方便;如果使用小的窗口,会导致页面元素展示的很拥挤,鼠标可能定位的不准确。

        3.借助find_element()函数定位输入框,send_keys()函数传入字符串,最后定位登录按钮并点击实现进入学习通的功能。

        4.browser.implicitly_wait(3)这个函数可以实现隐式等待,设置全局查找时间3秒,意思是超过3秒没有定位到一个元素,就会报异常,期间会一直轮询查找元素。

                                 

                

                

                

browser.get('url')  # 最大化窗口 browser.maximize_window()  # ========== 登录功能 ========== # 1.输入账号密码 browser.find_element(By.ID, 'phone').send_keys('phone') browser.find_element(By.ID, 'pwd').send_keys('pwd') browser.find_element(By.ID, 'loginBtn').click()  # 等待页面加载 browser.implicitly_wait(3)

2.3实现自动点击下一节课

        1.这里本来是准备爬取到每节课的时长,但是学习通采用了js动态添加和iframe标签内嵌网页反爬。iframe标签内嵌可以用switch_to.iframe()处理;js标签需要去DevTools里面查看。

                      

这里确实找到了视频的时长,因此我去观察请求网址,想找到规律自造网址去爬到时长:https://mooc1.chaoxing.com/ananas/video-editor/sub?objectid=4fcd2c59c84679de42674db7242d5650

https://mooc1.chaoxing.com/ananas/video-editor/sub?objectid=5558383fc895ac5e1b9b3a4295b8d87d

两个网址确实有规律可循,都是get请求,在后面拼接了objectid=‘xxx’,所以我去专门查看了objectid

4fcd2c59c84679de42674db7242d5650

4fcd2c59c84679de42674db7242d5650

6357a52a95f73e75fe4eb5646d3e84bd

显然是无迹可寻......

所以采用下下策,列表中自己输入每节课的时长向上取整,得到了time_list[]

        2.接下来就是pyautogui库的高光时刻了,通过mouse_pos = pyautogui.position(),获得鼠标在屏幕的像素点位置,在通过pyautogui.moveTo(x, y, duration=0.5)移动鼠标的位置,在通过pyautogui.click()实现鼠标点击,即可完成自动播放下一集的功能。

需要注意两个章节之间是有一个章节提示,这并不是下一节课的按钮,需要跳过,所以每层内循环结束后y+=50

                                   

# ========== 自动点击下一节课 ========== # 这里以两章为例 # 每节课的视频时长 time_list = [[18, 12, 16, 12, 18, 15, 23],              [11, 7, 22, 15, 26, 13, 15, 13]]  # 第一节课按钮的位置 x = 1474 y = 450 for i in range(len(time_list)):     for j in range(len(time_list[i])):         # 每节课的位置         pyautogui.moveTo(x, y, duration=0.5)         pyautogui.click()         # 点击播放器         sleep(3)         # 播放器的位置 x=692, y=780         pyautogui.moveTo(692, 780, duration=0.3)         pyautogui.click()         # 等视频播放完         sleep(time_list[i][j] * 60)         # 下一节课位置的更新         y += 50     y += 50 

三.结束语

        1.整个程序的制作过程有很多的残缺,例如还没有解决自动爬取课程时长的问题;也没有办法定位源代码没有的元素,像js动态添加;依然是以py文件展现的,没有打包成exe的脚本文件。

        2.这个程序依然没有实现完全的自动化,而且十分的简陋,是我突发奇想的第一次自动化程序。在接下来的时间里,我会继续学习,不断完善这个程序,谢谢喜欢。

相关内容

热门资讯

安卓系统变身软件有哪些,盘点热... 你有没有发现,你的安卓手机最近是不是有点儿“焕然一新”了呢?是不是觉得它突然变得超级酷炫,仿佛拥有了...
安卓系统在欧珀手机,安卓系统下... 你有没有发现,最近欧珀手机在国内外的市场上可是越来越火了?这不,咱们就来聊聊安卓系统在欧珀手机中的应...
小米2原生安卓7系统,性能与体... 你有没有想过,一部手机,除了拍照、玩游戏,还能给你带来怎样的惊喜?今天,就让我带你走进小米2的世界,...
安卓最简单的手机系统,最简单手... 你有没有想过,拥有一部手机,却不用为复杂的系统烦恼?想象只需轻轻一点,就能完成所有操作,那该多美好!...
ros是安卓系统吗,揭秘安卓系... 哦,亲爱的读者,你是否曾好奇过,ROS(Robot Operating System)是不是安卓系统...
安卓系统装饰房子游戏,打造梦幻... 你知道吗?现在手机游戏可是越来越好玩了,尤其是那些可以在安卓系统上装饰房子的游戏,简直让人爱不释手!...
大厂攻略系统和安卓互通,解锁全... 你有没有想过,那些在大厂工作的朋友们,他们是如何轻松应对各种复杂的工作任务的呢?秘密武器之一,就是那...
amigoos是安卓系统吗,安... 你有没有听说过Amigoos这个软件?最近,它在网上可是引起了不小的讨论呢!很多人都在问,Amigo...
安卓如何弄系统配音,安卓系统配... 你有没有想过,你的安卓手机也能变得像电影里的配音演员一样,声音抑扬顿挫,引人入胜?没错,今天就要来教...
谷歌加大控制安卓系统,新策略解... 你知道吗?最近谷歌可是动作频频,对安卓系统进行了大刀阔斧的改革。这可不是小打小闹,而是要彻底改变安卓...
安卓纯净os系统就是苹果系统吗... 你有没有想过,安卓纯净OS系统是不是就像苹果系统那样呢?是不是一提到纯净,就让人联想到那简洁、优雅的...
win系统和安卓哪个好,谁更胜... 说到电脑操作系统,你是不是也跟很多人一样,在Win系统和安卓之间纠结不已?今天,就让我来给你好好分析...
安卓系统后台走流量,如何有效管... 你有没有发现,手机里的安卓系统有时候就像一个偷跑的小偷,悄无声息地在你不知情的情况下消耗着你的流量呢...
安卓系统upapp怎么更新,从... 亲爱的安卓用户们,你是否也遇到了这样的烦恼:每次打开upapp,总是发现它还停留在那个版本,而新版本...
安卓10系统的华为,创新与性能... 你知道吗?最近手机圈里可是热闹非凡呢!安卓10系统的新风潮已经吹到了华为的身上,让这款国产手机品牌焕...
安卓车机系统推介,安卓车机系统... 你有没有发现,现在开车出门,车机系统的重要性简直堪比手机里的操作系统呢!想象你正驾驶着爱车,突然想听...
安卓5.0系统我的世界,探索安... 亲爱的读者,你是否曾在某个午后,坐在电脑前,被《我的世界》那五彩斑斓的世界深深吸引?今天,就让我带你...
给安卓系统制造故障,揭秘幕后黑... 你知道吗?在科技飞速发展的今天,安卓系统已经成为了全球最受欢迎的手机操作系统之一。但是,你知道吗?有...
安卓系统怎么拍漫画,一键拍出精... 你有没有想过,用安卓手机也能轻松拍出漫画风格的图片呢?没错,就是那种色彩鲜艳、线条流畅,看起来就像是...
安卓系统的心酸史,从心酸起步到... 你有没有想过,我们每天离不开的安卓系统,它也有着一段不为人知的心酸史呢?想象一个从无到有,从默默无闻...