zoukankan      html  css  js  c++  java
  • 用Python来自动刷智慧树网站的网课

    学校最近让看什么网课,智慧树网站的,太无聊了,写个脚本刷下,这里是用Python+selenium实现的,也可以用js脚本,更简单,但是我这里刚好最近在学python,就顺便练习下,说下有几个点,

    1.这里为了练习顺便把登陆功能也做了,注意有一个自动联想元素,需要定位并点击它

    2.有两个弹窗,只解决了一个,另一个不知为什么定位不到,所以这里需要手动点击一次,

    3.视频中间会有问题弹窗出现,不处理弹窗不会继续播放,这里使用循环不断判断能否定位到弹窗,定位到了就对弹窗进行处理,获取网页源代码并定位问题的name,之后定位并随便选择一个答案作答,

    4.这里设置了1.5倍速播放,注意需要先控制鼠标移动到播放窗口处,才能定位到速度按钮

    5.其实也可以直接启动浏览器之后,自己进行登录操作,然后运行指定代码,

    6.注意需要更改代码中的学校,学号,密码为自己的信息

    网站的url:     http://study.zhihuishu.com/learning/videoList;       具体到个人可能会有一些其他的参数,不过不影响

    欢迎交流。。

    具体代码如下:

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException, NoSuchFrameException
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    from bs4 import BeautifulSoup
    
    if __name__ == '__main__':
        print('stART')
        url = 'http://study.zhihuishu.com/learning/videoList;jsessionid=075B1012EC3EFA6EB79A19B1FF96EA44;jsessionid=709212495C7D26BCC1F884A2D4EEC2D9?recruitAndCourseId=4b585c5f4252415846425e5150'
        browser = webdriver.Chrome()
        wait = WebDriverWait(browser, 10)
        browser.get(url)
        wait.until(EC.element_to_be_clickable((By.LINK_TEXT, '学号'))).click()
        wait.until(EC.presence_of_element_located((By.ID, 'quickSearch'))).send_keys('学校名字')
        wait.until(EC.presence_of_element_located((By.ID, 'clCode'))).send_keys('学号')
        wait.until(EC.presence_of_element_located((By.ID, 'clPassword'))).send_keys('密码')
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#schoolListCode > li:nth-child(2)'))).click()
        wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'wall-sub-btn'))).click()
        wait.until(EC.presence_of_element_located((By.LINK_TEXT, '确定'))).click()
        # 这块手动点下我已统一
        flag = 0
        i = 1
        k = 1
        time.sleep(5)
        while True:
            if k == 1:
                print("播放地", i, '个视频')
                a = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'videoArea')))
                ActionChains(browser).move_to_element(a).perform()
                speed = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#vjs_mediaplayer > div.controlsBar > div.speedBox')))
                speed.click()
                speed_15 = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'speedTab15')))
                speed_15.click()
                k = 0
            while True:
                try:
                    a = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'videoArea')))
                    ActionChains(browser).move_to_element(a).perform()
                    isFinsh = (browser.find_element_by_class_name('passTime').get_attribute('style') == ' 100%;')
                    if isFinsh:
                        break
                    browser.switch_to.frame('tmDialog_iframe')
                    print("弹窗出现")
                    flag = 1
                    break
                except NoSuchFrameException:
                    pass
            if flag == 1:  # 关闭弹窗
                print("关闭弹窗")
                soup = BeautifulSoup(browser.page_source)
                name = soup.find(class_='answerOption').input.attrs['name']
                a = wait.until(EC.presence_of_element_located((By.NAME, name)))
                a.click()
                #browser.find_element_by_name('question561294').click()
                browser.switch_to.default_content()
                browser.find_element_by_link_text('关闭').click()
                print("关闭成功")
                flag = 0
            else:  # 播放下一个视频
                print("播放完了第", i, '个视频')
                i += 1
                browser.find_element_by_link_text('下一节').click()
                isFinsh = False
                k = 1
                time.sleep(2)
  • 相关阅读:
    2017ccpc全国邀请赛(湖南湘潭) E. Partial Sum
    Codeforces Round #412 C. Success Rate (rated, Div. 2, base on VK Cup 2017 Round 3)
    2017 中国大学生程序设计竞赛 女生专场 Building Shops (hdu6024)
    51nod 1084 矩阵取数问题 V2
    Power收集
    红色的幻想乡
    Koishi Loves Segments
    Wood Processing
    整数对
    Room and Moor
  • 原文地址:https://www.cnblogs.com/eenio/p/10852828.html
Copyright © 2011-2022 走看看