lntuer 发表于 2019-10-14 17:54

基于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)
声明:仅限个人学习使用,严禁商业使用,否则后果自负,如有违规,管理直接删帖!
最后,原创不易,还希望大家可以高抬贵手免费评个分!!!
编辑说明:改进验证码输入方式,不再进行人工输入,由代码自动输入!

今天礼拜八 发表于 2019-10-25 14:18

lntuer 发表于 2019-10-24 22:15
elem.clear()
elem.send_keys(username)
这就是清除预设代码啊

昨晚你说清除了,我把代码重新复制过去,试了一次,那内容不是在,
后来我把三个输入内容的延时加了几秒,这样就有时间手工删除预设内容了。
整个脚本挺稳定的,昨晚测试了一个课程 ,12小时内搞定一个课程。

vethenc 发表于 2019-10-14 18:05

感谢分享

宅男/kel 发表于 2019-10-14 18:06

支持一下岳阳人民

雨林木风 发表于 2019-10-14 18:41

wind941 发表于 2019-10-14 18:43

楼主是岳阳的吗?我也岳阳的

fallerL 发表于 2019-10-14 18:51

感谢分享-

ghoob321 发表于 2019-10-14 18:57

岳阳楼记里边的岳阳吗,感谢分享

guotong99 发表于 2019-10-14 19:19

岳阳老乡来支持下。就算看不懂。有没有什么简单的小程序或者视频教程咯?

dreamrise 发表于 2019-10-14 19:24

膜拜大神。

dreamrise 发表于 2019-10-14 19:28

验证码可以调用百度API识别 {:1_911:}
页: [1] 2 3
查看完整版本: 基于Python和selenium的岳阳市专业技术人员远程教育学习脚本