基于Python和selenium的岳阳市专业技术人员远程教育学习脚本
本帖最后由 lntuer 于 2019-10-15 14:30 编辑一、介绍
岳阳市专业技术人员远程教育网址:http://yyzjpx.17el.cn/
二、功能
①基于Python和selenium半自动化登陆、pyautogui模块;
②自动学习该课程目录下所有课程和学习;
③可以后台观看视频并静音播放
代码如下:
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").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)) * 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)
声明:仅限个人学习使用,严禁商业使用,否则后果自负,如有违规,管理直接删帖!
最后,原创不易,还希望大家可以高抬贵手免费评个分!!!
编辑说明:改进验证码输入方式,不再进行人工输入,由代码自动输入! lntuer 发表于 2019-10-24 22:15
elem.clear()
elem.send_keys(username)
这就是清除预设代码啊
昨晚你说清除了,我把代码重新复制过去,试了一次,那内容不是在,
后来我把三个输入内容的延时加了几秒,这样就有时间手工删除预设内容了。
整个脚本挺稳定的,昨晚测试了一个课程 ,12小时内搞定一个课程。 感谢分享 支持一下岳阳人民 楼主是岳阳的吗?我也岳阳的 感谢分享-
岳阳楼记里边的岳阳吗,感谢分享 岳阳老乡来支持下。就算看不懂。有没有什么简单的小程序或者视频教程咯? 膜拜大神。 验证码可以调用百度API识别 {:1_911:}