基于Python与selenium实现河北干部网络学院自动化登录与学习

首先,声明该代码脚本仅供参考与借鉴,任何使用该脚本进行牟利或者其他非法途径使用,本人保留追究法律责任的最终权利。
本脚本是基于Python与selenium实现河北干部网络学院自动化登录与学习,在使用过程中无需人为干预,即可实现全自动挂机学习,并且可以进行超级倍速播放,对小白极其友好!毕竟小编也是小白嘛!
接下来,上图!
基于Python与selenium实现河北干部网络学院自动化登录与学习_第1张图片
是不是使用教程简单明了,但是在脚本使用前,需要安装谷歌相关的软件及驱动,Chromedriver,小编会把代码及相关软件放到文章结尾,供大家使用与参考。
接下来,上代码!

  1. 首先进行相关库的导入,如果运行中出现库没有导入的情况,可以使用命令 pip install ‘库名称’,进行导入。然后进行账号密码的输入,获取变量,以便后面能够成功登录。
# mashuai 制作@ qq:21194524
#河北干部网络学院 专题网班 全自动学习
#selenium + python 实现 WEB 自动化
from selenium import webdriver
import time
import pyautogui
import os
import datetime
import schedule
from selenium.webdriver.common.by import By
print("This script was produced by Ma Shuai and is copyrighted")
print("本脚本由 Mashuai 进行制作并持有版权")
print("有任何问题请联系作者 qq:21194524")
print("您好,欢迎使用 河北干部网络学院 全自动学习脚本")
#输入用户名
username=input("请输入您的用户名:")
#输入用户密码
pwd=input("请输入您的用户密码:")
  1. 实现变量赋值之后,对Chrome进行实例化,然后登陆河北干部网络学院官方网址,进行登录并判断是否能够登陆成功。
browser = webdriver.Chrome()  # 实例化对象
url = 'http://www.hebgb.gov.cn/'#  河北干部网络学院 网页链接
browser.get(url)
browser.maximize_window()  #最大化页面
#进行用户名 密码的自动化填充
browser.find_element(By.ID,"username").send_keys(username)
browser.find_element(By.ID,"pwd").send_keys(pwd)
#延迟一秒
time.sleep(1)
#填写完成后自动点击进行登录
browser.find_element(By.CLASS_NAME,"login_btn").click()
realname = browser.find_element(By.ID,"realname").text
print("欢迎您,",realname,"请查看您是否已经成功登录,如果密码错误请手动进行更改")
time.sleep(1)

3.首先判断是否已经成功报名 专题网班 ,如果没有报名就手动浏览器报名,报名成功如果能够检测到课程即可继续点击,然后进入相关视频观看的界面。

browser.find_element(By.XPATH,'/html/body/div/div[1]/div[2]/ul/li[3]/a').click()
try:
    browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[2]/div/div[1]/div[2]/a').click()
except:
    print("检测到学习已经全部完成或者未选择学习内容,请关闭运行中的程序,手动查看并更改")
    browser.quit()
try:
    browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span')  #查看页面是否有元素
except:
    print("检测到学习已经全部完成或者未选择学习内容,请关闭运行中的程序,手动查看并更改")
    browser.quit()
time.sleep(1)
undonelesson = browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span').text
#初步赋值
undonelesson_1=undonelesson
#输出未学完课程数量
print("未学习课程还剩:",undonelesson,"即将开始学习")
#分割线输入
def print_line(char):
    print(char*50)
print_line("-")
browser.find_element(By.CLASS_NAME,'hover_btn').click()
# 隐形等待网页加载
browser.implicitly_wait(5)
#点击进入学习
browser.switch_to.window(browser.window_handles[-1])
browser.find_element(By.CLASS_NAME,'user_choise').click()
  1. 利用JavaScript脚本使该视频能够一直倍速运行,因为如果一个视频章节下面会有多个视频,更换网页后必须重新执行JS脚本才能实现倍速播放。
# 引入Javascript脚本进行全自动倍速播放
browser.execute_script("document.querySelector('video').playbackRate = 16.0")
  1. 检测课程数量是否发生变化,如果发生变化即为课程的这个章节已经学习完成,然后需要返回第一个页面进行其他课程的选择,然后判断方法为设置定时器循环运行检测课程数量元素是否发生改变。课程学习完毕,自动切换下一个课程,如果课程全部学习完毕,则提示用户全部章节已经学习完毕。
#定时检测课程参数是否发生改变
def job():
    global undonelesson
    global undonelesson_1
    #切换浏览器窗口,准备进行条件判断
    browser.switch_to.window(browser.window_handles[0])
    browser.refresh()    
    try:
        browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span')  #查看页面是否有元素
    except:
        print("检测到学习已经全部完成,请关闭运行中的程序")
        browser.quit()
    #切换浏览器窗口,确保倍速学习不间断
    browser.switch_to.window(browser.window_handles[-1])
    browser.execute_script("document.querySelector('video').playbackRate = 16.0")
    browser.switch_to.window(browser.window_handles[0])
    undonelesson_1=browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span').text
    #条件判断
        if undonelesson_1!=undonelesson:
        browser.refresh()
        undonelesson=undonelesson_1
        print(datetime.datetime.strftime(datetime.datetime.now(),'%Y-%m-%d %H:%M:%S'))
        print("未学习课程还剩:",undonelesson_1,"正在学习")
        #分割线输入
        def print_line(char):
            print(char*50)
        print_line("-")
        browser.find_element(By.CLASS_NAME,'hover_btn').click()
        # 隐形等待网页加载
        browser.implicitly_wait(5)
        #点击进入学习
        browser.switch_to.window(browser.window_handles[-1])
        browser.find_element(By.CLASS_NAME,'user_choise').click()
        # 引入Javascript脚本进行全自动倍速播放
        browser.execute_script("document.querySelector('video').playbackRate = 16.0")
schedule.every(10).seconds.do(job)
while True:
    schedule.run_pending()
    time.sleep(1)
#保证持续运行
os.system("pause")
  • 在倍速播放的过程中,请不要干预自动运行,因为使用的是selenium,如果人为干预有可能影响脚本正常运行,如果遇到报错,请重启脚本进行使用。
  • tips:该脚本由Python 10.x进行编译,并由pyinstall进行打包制作。

完整代码如下:

# mashuai 制作@ qq:21194524
#河北干部网络学院 专题网班 全自动学习
#selenium + python 实现 WEB 自动化
from selenium import webdriver
import time
import pyautogui
import os
import datetime
import schedule
from selenium.webdriver.common.by import By
print("This script was produced by Ma Shuai and is copyrighted")
print("本脚本由 Mashuai 进行制作并持有版权")
print("有任何问题请联系作者 qq:21194524")
print("您好,欢迎使用 河北干部网络学院 全自动学习脚本")
#输入用户名
username=input("请输入您的用户名:")
#输入用户密码
pwd=input("请输入您的用户密码:")
browser = webdriver.Chrome()  # 实例化对象
url = 'http://www.hebgb.gov.cn/'#  河北干部网络学院 网页链接
browser.get(url)
browser.maximize_window()  #最大化页面
#进行用户名 密码的自动化填充
browser.find_element(By.ID,"username").send_keys(username)
browser.find_element(By.ID,"pwd").send_keys(pwd)
#延迟一秒
time.sleep(1)
#填写完成后自动点击进行登录
browser.find_element(By.CLASS_NAME,"login_btn").click()
realname = browser.find_element(By.ID,"realname").text
print("欢迎您,",realname,"请查看您是否已经成功登录,如果密码错误请手动进行更改")
time.sleep(1)
browser.find_element(By.XPATH,'/html/body/div/div[1]/div[2]/ul/li[3]/a').click()
try:
    browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[2]/div/div[1]/div[2]/a').click()
except:
    print("检测到学习已经全部完成或者未选择学习内容,请关闭运行中的程序,手动查看并更改")
    browser.quit()
try:
    browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span')  #查看页面是否有元素
except:
    print("检测到学习已经全部完成或者未选择学习内容,请关闭运行中的程序,手动查看并更改")
    browser.quit()
time.sleep(1)
undonelesson = browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span').text
#初步赋值
undonelesson_1=undonelesson
#输出未学完课程数量
print("未学习课程还剩:",undonelesson,"即将开始学习")
#分割线输入
def print_line(char):
    print(char*50)
print_line("-")
browser.find_element(By.CLASS_NAME,'hover_btn').click()
# 隐形等待网页加载
browser.implicitly_wait(5)
#点击进入学习
browser.switch_to.window(browser.window_handles[-1])
browser.find_element(By.CLASS_NAME,'user_choise').click()
# 引入Javascript脚本进行全自动倍速播放
browser.execute_script("document.querySelector('video').playbackRate = 16.0")
#定时检测课程参数是否发生改变
def job():
    global undonelesson
    global undonelesson_1
    #切换浏览器窗口,准备进行条件判断
    browser.switch_to.window(browser.window_handles[0])
    browser.refresh()    
    try:
        browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span')  #查看页面是否有元素
    except:
        print("检测到学习已经全部完成,请关闭运行中的程序")
        browser.quit()
    #切换浏览器窗口,确保倍速学习不间断
    browser.switch_to.window(browser.window_handles[-1])
    browser.execute_script("document.querySelector('video').playbackRate = 16.0")
    browser.switch_to.window(browser.window_handles[0])
    undonelesson_1=browser.find_element(By.XPATH,'/html/body/div[3]/div[2]/div[3]/div/div[4]/div[1]/a/span').text
    #条件判断
    if undonelesson_1!=undonelesson:
        browser.refresh()
        undonelesson=undonelesson_1
        print(datetime.datetime.strftime(datetime.datetime.now(),'%Y-%m-%d %H:%M:%S'))
        print("未学习课程还剩:",undonelesson_1,"正在学习")
        #分割线输入
        def print_line(char):
            print(char*50)
        print_line("-")
        browser.find_element(By.CLASS_NAME,'hover_btn').click()
        # 隐形等待网页加载
        browser.implicitly_wait(5)
        #点击进入学习
        browser.switch_to.window(browser.window_handles[-1])
        browser.find_element(By.CLASS_NAME,'user_choise').click()
        # 引入Javascript脚本进行全自动倍速播放
        browser.execute_script("document.querySelector('video').playbackRate = 16.0")
schedule.every(10).seconds.do(job)
while True:
    schedule.run_pending()
    time.sleep(1)
#保证持续运行
os.system("pause")

相关浏览器驱动Chromedriver与浏览器安装包如下:
**链接:**https://pan.baidu.com/s/1Bst7vkgEM66Rzx7eJAkdPg
提取码:mlp6
**Chromedriver:**https://chromedriver.storage.googleapis.com/index.html
Chromedriver选择103.0.5060.xx安装即可

你可能感兴趣的:(python,selenium,自动化)