主要是通过使用selenium的查找定位来实现,同时通过time.sleep来控制时间

网址:http://hrbj.21tb.com

里面的课程挺不错的,都是一些别的网站上的付费教程。(不得不感慨,铁路系统待遇就是好呀。别人花钱想买的和想求的资源,免费看都懒得看)

这个刷课主要是替代人的操作。没用什么脚本或者加速什么的,全部都是实打实的播放。

打算挂机刷网课的小伙伴们,可以参考一下!

from selenium import webdriver

import json

import time

from selenium.webdriver.common.action_chains import ActionChains

from easygui import enterbox

import re

chromedriver = 'chromedriver.exe' # 设置浏览器内核exe程序的位置

chome_options = webdriver.ChromeOptions() #设置使用浏览器内核

wd = webdriver.Chrome(chromedriver, chrome_options=chome_options)

wd.delete_all_cookies() # 删除cookies

wd.maximize_window() # 将浏览器最大化

wd.implicitly_wait(60) #60s内循环查找元素

wd.get("http://hrbj.21tb.com") #访问网页

print("访问页面成功!")

time.sleep(15) #15S的延时,输入信息,或者自动输入信息

#异地登陆,会弹出来验证窗口,常用地登陆就没什么问题

element = wd.find_element_by_id("loginName")

element.send_keys("用户名")

element = wd.find_element_by_id("password")

element.send_keys("密码\n")

cookies = wd.get_cookies() #获取cookies

f1 = open('cookie.txt', 'w')

f1.write(json.dumps(cookies))

f1.close

f1 = open('cookie.txt')

cookie = f1.read()

cookie = json.loads(cookie)

for c in cookie:

wd.add_cookie(c) #把cookies信息传递给浏览器内核,这样可以保证浏览器一直处于账号登陆状态

print("登陆成功!")

time.sleep(15)

def shuake(url): #定义刷课函数

wd.get(url) #访问网址

print("进入学习界面成功!")

time.sleep(2)

element = wd.find_element_by_tag_name("iframe") #找的tag name

# print(element.text)

play_url = element.get_attribute('src') #获得实际播放信息网址

# print(play_url)

wd.get(play_url) #访问实际播放页

print("进入实际播放页")

time.sleep(5)

elements = wd.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div/ul[1]/div/li/span[2]') #找到每节课的时长所在位置

play_times = [] #时长设置空列表

for element in elements: #依次获得播放时长

# print(element.text)

n = re.findall("-?[0-9]\d*",element.text) #提取其中的数字

# print(n)

m = int(n[0]) * 60 + int(n[1]) # 秒数换算

# print("该视频秒数为:", m)

play_times.append(m) #添加到列表中

time.sleep(3)

element = wd.find_element_by_class_name("outter") #找到播放键

element.click() #点击

print("开始播放!")

for play_time in play_times: #依次播放

print("本节课程播放用时需要", play_time,"秒")

time.sleep(play_time) #等待一个是视频时长的时间

time.sleep(3) #等待3s,以防网络延时没加载出来下一节

element = wd.find_element_by_class_name('next-button') #定位下一节按钮

element.click() #点击

print("播放下一节成功!")

print("播放本门课程结束!")

url = enterbox(msg="请输入课程网址!") #用easygui的输入框,方便打包输入

shuake(url)

这个刷课主要是替代人的操作。没用什么脚本或者加速什么的,全部都是实打实的播放。

来源:https://www.cnblogs.com/7758520lzy/p/12569298.html

python刷网课程序,基于python和selenium的刷网课的代码相关推荐

  1. 基于python的旅游系统_基于python的去哪儿网旅游数据分析

    20011 基于python的去哪儿网旅游数据分析 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段 ...

  2. python调用接口查询_基于Python的苹果序列号官网查询接口调用代码实例

    1.[代码][Python]代码 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import ur ...

  3. python服务器稳定性,一种基于Python服务器稳定性测试的方法技术

    [技术实现步骤摘要] 本专利技术涉及一种服务器稳定性测试的方法,具体地说是. 技术介绍 随着服务器行业的快速发展,越来越多的客户开始偏向于购买大批量的服务器作为自己的核心应用.所以对服务器的稳定性也提 ...

  4. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  5. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  6. python生成json接口_基于python的Flask框架写json接口并且结合eolinker进行接口测试

    一.前言 很多时候为了提高软件开发的效率,后端程序人员理想状态下应该编写程序测试接口供前端程序人员进行测试,以便前端的开发.笔者由于项目的需求近期尝试学习了一下测试接口的编写,以Python+Flas ...

  7. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

  8. 基于python的影评数据分析_基于Python聚焦型网络爬虫的影评获取技术

    龙源期刊网 http://www.qikan.com.cn 基于 Python 聚焦型网络爬虫的影评获取技 术 作者:郭向向 郑嘉慧 苗学芹 来源:<时代金融> 2019 年第 11 期 ...

  9. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  10. 基于python的房地产数据分析_基于Python的数据分析

    转载 | CSDN 编辑 | 雷课小雷 下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念.数据分析流程.Python优势.常用模块的用途以及使用Python进行数据分析的学习方法及步骤 ...

最新文章

  1. 在MacBook Pro 2015上安装iTerm2笔记
  2. cmd pc如何开多个微信_Win10下个人微信与企业微信多开
  3. Fleury算法找欧拉环游
  4. 用java编写简单Webserver,理解webserver的功能。
  5. shell的基础学习
  6. Java多线程超详细总结
  7. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  8. 字符串函数参数传入传出(去空格)
  9. java蓝桥杯算法训练完数
  10. 整合ssh model $$_javassist_13 cannot be cast to javassist.util.proxy.Proxy
  11. 我们为什么需要SDN?
  12. 5个相见恨晚的Linux命令
  13. PHP生成HTML的技术原理
  14. project weibo
  15. 如何看待北大硕士买米粉事件?听听广东亨盛维嘉怎么说
  16. 重装系统后开机黑屏显示cannot load file怎么办
  17. 小学带计算机2000的检讨书,小学生的检讨书(精选10篇)
  18. 怎么增加照片的KB大小
  19. 孟丽秋教授当选为慕尼黑工业大学第一副校长
  20. 中文核心期刊目录汇总(2020年12月发布)

热门文章

  1. 博弈论概述 (转自百度百科)
  2. android 1024 github,1024 怎么能少了这款高颜值、敲实用的 GitHub 第三方客户端呢?...
  3. 方舟生存进化刷精英恐龙代码
  4. Echart地图的省级,以及所有地市级下载与使用
  5. 回顾线性系统和非线性系统
  6. texlive for win10宏包更新
  7. C# 翻页设计:首页,上一页,下一页,末页 ,跳转
  8. 微信应用开发简单示例,学生自助报道系统
  9. SpringBoot+Querydsl 框架,大大简化复杂查询操作
  10. 英语教学计划软件测试,第一学期英语教学计划