牛资料plus-你想要的都没有

标题: 函授网上视频自动学习python脚本 [打印本页]

作者: 牛牛先森    时间: 2020-3-26 15:53
标题: 函授网上视频自动学习python脚本

Python 是个好东西。

  1. from selenium import webdriverimport time
  2. #import pandas as pd
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.support.wait import WebDriverWait
  5. from selenium.webdriver.common.action_chains import ActionChains
  6. from selenium.webdriver.support import expected_conditions as EC
  7. #import writer_file
  8. import re


  9. class Shuake():
  10.     """docstring for ClassName"""

  11.     def __init__(self):
  12.         #super(ClassName, self).__init__()
  13.         # 谷歌浏览器
  14.         self.username = '账号'
  15.         self.userpassword = '密码'
  16.         driver_path = r'F:\project\chromedriver.exe'
  17.         self.driver = webdriver.Chrome(executable_path=driver_path)

  18.     def login_jiaoyu(self):
  19.         # 账号密码
  20.         self.driver.get("http://g.cjnep.net/lms/web/default/login")
  21.         # 用户名,密码
  22.         username_input = self.driver.find_element_by_xpath('//*[@id="username"]')
  23.         username_input.click()
  24.         time.sleep(0.5)
  25.         username_input.send_keys(self.username)
  26.         time.sleep(0.5)
  27.         userpassword_input = self.driver.find_element_by_xpath('//*[@id="password"]')
  28.         userpassword_input.send_keys(self.userpassword)
  29.         print('请输入验证码,然后点击登录')
  30.         # 等待检测是否登录成功
  31.         wait = WebDriverWait(self.driver, 100)
  32.         shouye_button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'active')))
  33.         print("登录成功")

  34.     def my_course(self):
  35.         """打开我的课程界面"""

  36.         print("打开课程界面")
  37.         self.driver.get("http://g.cjnep.net/lms/web/course/index")
  38.         # 获取网页源码
  39.         my_course_source = self.driver.page_source
  40.         #writer_file.write_file('kk.txt', my_course_source)
  41.         # 获取课程列表
  42.         my_course_source = my_course_source[my_course_source.find('默认;'):]
  43.         # 课程名称
  44.         course_name = re.findall('class="namediv"><span.*">(.*)</span>(.*)</div>', my_course_source)
  45.         # print(course_name)
  46.         # 课程链接
  47.         course_url = re.findall('href="/(.*)">进入学习</a></div>', my_course_source)
  48.         # print(course_url)
  49.         # 学习进度
  50.         course_complete = re.findall(
  51.             '<div class="otherdiv">(.*)<span>(.*)<font>(.*)</font></span> </div>', my_course_source)
  52.         # print(course_complete)
  53.         # 学期 课程名称 主讲老师  完成率  课程链接
  54.         courses_page_list = []
  55.         for x in range(0, len(course_name)):
  56.             term = course_name[x][0]
  57.             name = course_name[x][1]
  58.             url = course_url[x]
  59.             teacher = course_complete[x][0]
  60.             speed = course_complete[x][2]
  61.             print(str(x + 1) + "===" + term + "===" + name + "===" + teacher +
  62.                   "===学习完成:" + speed + "===http://g.cjnep.net/" + url)
  63.             courses_page_list.append([term, name, "http://g.cjnep.net/" + url, teacher, speed])

  64.         return courses_page_list

  65.     def num_input(self, max_num):
  66.         """用户输入"""
  67.         max_num_1 = max_num
  68.         while True:
  69.             try:
  70.                 num = int(input("输入数字序号1~{}之间选择开始学习的视频:".format(max_num_1)))
  71.                 if num > max_num_1 or num < 1:
  72.                     num = int("x")
  73.                 break
  74.             except Exception as e:
  75.                 print("输入错误,请再输入一遍")
  76.         return num

  77.     def course_list(self, courses_page_list):
  78.         """获取单科课程播放列表"""
  79.         num = self.num_input(len(courses_page_list))
  80.         print(courses_page_list[num - 1][2])
  81.         self.driver.get(courses_page_list[num - 1][2])
  82.         # 打开单科课程列表
  83.         my_course_source = self.driver.page_source
  84.         #writer_file.write_file('55.txt', my_course_source)
  85.         # 等待页面跳转,继续学习
  86.         wait = WebDriverWait(self.driver, 1000)
  87.         learn_button = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="nm"]')))
  88.         print('准备开始学习')
  89.         continue_learn = re.findall('href="(.*)">(.*)学习', my_course_source)
  90.         print(continue_learn)
  91.         # 打开课程播放界面
  92.         self.driver.get("http://g.cjnep.net" + continue_learn[0][0])
  93.         # continue_learn = re.findall('href="(.*)">继续学习', my_course_source)
  94.         # print(continue_learn)

  95.     def play_learn(self):
  96.         """播放界面"""
  97.         wait = WebDriverWait(self.driver, 100000000)
  98.         # 播放按钮
  99.         play_button = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@role="button"]')))
  100.         print('开始播放')
  101.         self.driver.find_elements_by_xpath('//*[@role="button"]')[0].click()
  102.         # 播放结束,下一章按钮
  103.         for x in range(1, 100000):
  104.             next_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="job_nextvideo_btn"]')))
  105.             print('本次已在线学习' + str(x) + '课时,即将进入下一章')
  106.             self.driver.find_element_by_xpath('//*[@id="job_nextvideo_btn"]').click()

  107.     def run(self):
  108.         self.login_jiaoyu()
  109.         # time.sleep(20)
  110.         courses_page_list = self.my_course()
  111.         self.course_list(courses_page_list)
  112.         self.play_learn()


  113. if __name__ == '__main__':
  114.     shuake = Shuake()
  115.     shuake.run()
复制代码






作者: 北回归线    时间: 2021-1-13 15:52
怎么用?




欢迎光临 牛资料plus-你想要的都没有 (https://bbs.6soluo.com/) Powered by Discuz! X3.4