智慧树网课平台自动刷讨论区脚本 您所在的位置:网站首页 用Python刷智慧树刷课 智慧树网课平台自动刷讨论区脚本

智慧树网课平台自动刷讨论区脚本

2024-07-16 14:34| 来源: 网络整理| 查看: 265

新版脚本

首先完成一次回答需要拆解成一下几部分

点击问题

点击回答按钮

输入答案

点击提交

关闭页面,点回问题列表页面

分别完成以上几步,需要导入pyautogui库,在终端键入pip install pyautogui,然后在脚本源文件头键入import pyautogui即可使用

我发现智慧树问题列表有些特点可以帮助我们定位问题的位置

智慧树问题列表

每条问题都会有回答,围观,日期,姓名等相对固定的部分,可以根据这些标志的位置对问题位置进行定位,再告知鼠标需要点击的位置就可以完成第一步

我们使用pyautogui.locateOnScreen()函数进行定位,先截图“围观”这两字,然后将截图路径用英文双引号包括,输入括号中,该函数会用这张截图来识别屏幕中相同部分的位置,从而在问题页对问题进行定位。该函数返回top,left,hight,weight四个参数,分别是要识别部分的上沿,左沿,高,宽。

定位之后进行点击,使用pyautogui.click()来进行点击,括号内输入定位xy值即可

接下来识别回答按钮同上一步操作

输入答案使用pyautogui.press()进行模拟按键盘输入。简单的'shide'还是很容易实现的

点击提交按钮同样截图识别

关闭页面就很简单了,直接在Python解释器中使用pyautogui.position()进行识别页面关闭按钮位置即可,点回问题列表操作同理

接下来滚轮向下滚动一下,继续循环上面步骤即可

运行在终端键入python +空格+文件的绝对路径名,回车即可,这样可以直接在浏览器页面上运行。如果用双击运行要配置环境,我就不用这个方法了

这时有个问题,受限于网速等一系列因素,点击之后不一定立刻出现下一页面,此时无法进行图片识别,会报错。这好解决,在上述操作的括号内输入duration=5,即该命令执行使用五秒,或者PAUSE=5全部pyautogui的操作延时5秒,这样时间就足够页面加载了。

但是这时又出现一个问题,滚轮滚动一下不一定正好划过去一个问题,这时就重复点击已经回答过的问题,而回答过的问题没有”我要回答”按钮,图片识别不出位置又会报错。也好解决,一但报错就点回开始页面再向下划一下,再进行循环即可。我们使用try except命令,try后面跟我们要正常执行的命令,except后面跟报错后执行的命令点会问题页面,并向下滑动一下滚轮。再跟一个continue命令,回到循环头开始下一步循环。这样问题就解决了

之后简单测试一下无误后可以进行大量循环,直接循环2000次(总共也没有两千个问题),然后就可以刷手机玩去了

但是之后又有个小问题,上面except只点回了问题页面,没关掉回答页面,出的错误多了标签页挤在一块,最终无法关闭页面导致浏览器崩溃。也好解决,except命令后面加上点击问题页面关闭按钮即可。

至此,自动刷网课脚本完成。

为了避免网课平台封号,给每一步的延迟时间不是5秒,而是random函数生成的随机时间,这样除非他当着我的面抓现行,否则谁也不知道是用的脚本。

源码

import pyautoguiimport randompyautogui.PAUSE=1for i in range (2000):        pyautogui.click(25,50)        left,top,weigth,hight = pyautogui.locateOnScreen('/home/beaver/桌面/深度截图_选择区域_20220909203911.png')    #识别围观字样在屏幕中第一个出现的位置        x=left        chushi=top-33    #把识别的坐标转换,定位到问题的位置        suiji = random.random()    #使点击的时间随机,防止被封        pyautogui.moveTo(left+weigth*0.5,top+hight*0.5)        pyautogui.scroll(-2)        #向下滚动一行题目        pyautogui.click(x,chushi,duration=0.25)    #点击问题

        try:                left,top,weigth,hight = pyautogui.locateOnScreen('截图的绝对路径')        except TypeError:                pyautogui.click(25,50)                continue        left,top,weigth,hight = pyautogui.locateOnScreen('截图的绝对路径')        pyautogui.click(left+weigth*0.5,top+hight*0.5,duration=0.9+suiji)    #点击我要回答        if suiji >=0.5:                pyautogui.click(1041,345,duration=0.9+suiji*2); pyautogui.press('s');pyautogui.press('h');pyautogui.press('i');pyautogui.press('d');pyautogui.press('e');pyautogui.press('space')        else:                pyautogui.click(1041,345,duration=0.9+suiji*2); pyautogui.press('s');pyautogui.press('h');pyautogui.press('i');pyautogui.press('space')

        try:                left,top,weigth,hight = pyautogui.locateOnScreen('截图的绝对路径')        except TypeError:                pyautogui.click(25,50)                continue        left,top,weigth,hight = pyautogui.locateOnScreen('截图的绝对路径')        pyautogui.click(left+weigth*0.5,top+hight*0.5,duration=0.1)    #输入答案后提交        pyautogui.click(435,48,duration=suiji*2)        pyautogui.click(25,50,duration=suiji)    #关闭网页,并点回问题列表



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有