本帖最后由 lntuer 于 2019-10-15 14:30 编辑
一、介绍
岳阳市专业技术人员远程教育网址:http://yyzjpx.17el.cn/
二、功能
①基于Python和selenium半自动化登陆、pyautogui模块;
②自动学习该课程目录下所有课程和学习;
③可以后台观看视频并静音播放
代码如下:
[Python] 纯文本查看 复制代码 from selenium import webdriver
import pyautogui
import time
import re
import random
username="你的账号"
passwd="你的密码"
login_url='http://yyzjpx.17el.cn'
option = webdriver.ChromeOptions()
option.add_argument('--mute-audio')
browser = webdriver.Chrome(chrome_options=option)
browser.maximize_window()
browser.get(login_url)
browser.implicitly_wait(10)
elem=browser.find_element_by_id("UserName")
elem.clear()
elem.send_keys(username)
time.sleep(1)
elem=browser.find_element_by_id("Password")
elem.clear()
elem.send_keys(passwd)
time.sleep(1)
js_002='return document.getElementsByClassName("login_img")[0].firstElementChild.textContent'
code_num=browser.execute_script(js_002)
elem=browser.find_element_by_id("yzm")
elem.clear()
elem.send_keys(code_num)
time.sleep(3)
elem=browser.find_element_by_id('sub')
elem.click()
time.sleep(3)
browser.get('你要学习的目录URL')
time.sleep(3)
windows = browser.window_handles
browser.switch_to_window(windows[-1])
time.sleep(10)
video_url=re.findall('<a href="(/flex/HXGC_Player.*?sfsc=0)"',browser.page_source)
video_time=re.findall('>总时长:(.*?)</span>',browser.page_source)
video_progress=re.findall('>学习进度:(.*?)%</span>',browser.page_source)
for a,b,c in zip(video_url,video_time,video_progress):
if c!="100":
print(c)
remain_time= int(str(b)[:2]) * 3600 + int(str(b)[3:5]) * 60 + int(str(b)[-2:])
remain_times=int(remain_time*(1-int(c)/100+0.01))
unwatch_video_url="http://person.17el.cn"+a
js_001='document.getElementsByClassName("chapterlist")[{}].firstElementChild.click()'.format(video_time.index(b))
browser.execute_script(js_001)
time.sleep(30)
for video_num in range(1,remain_times):
try:
js = 'window.parent.document.getElementById("HXGC_Player").questionPopHandler({},0);'.format(int(random.random())+1)
browser.execute_script(js)
print("该课程还有{}秒未学习......".format(remain_times-video_num))
time.sleep(1)
except:
print("无法观测到是否有答题页面……")
browser.back()
time.sleep(5)
声明:仅限个人学习使用,严禁商业使用,否则后果自负,如有违规,管理直接删帖!
最后,原创不易,还希望大家可以高抬贵手免费评个分!!!
编辑说明:改进验证码输入方式,不再进行人工输入,由代码自动输入! |