3251078313 发表于 2020-3-22 16:10:36

基于python和selenium的刷网课的代码。

主要是通过使用selenium的查找定位来实现,同时通过time.sleep来控制时间
网址:http://hrbj.21tb.com
里面的课程挺不错的,都是一些别的网站上的付费教程。(不得不感慨,铁路系统待遇就是好呀。别人花钱想买的和想求的资源,免费看都懒得看)
这个刷课主要是替代人的操作。没用什么脚本或者加速什么的,全部都是实打实的播放。
打算挂机刷网课的小伙伴们,可以参考一下!

纯文本查看 复制代码

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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/div/div/ul/div/li/span')    #找到每节课的时长所在位置
    play_times = []    #时长设置空列表
    for element in elements:    #依次获得播放时长
      # print(element.text)
      n = re.findall("-?\d*",element.text)    #提取其中的数字
      # print(n)
      m = int(n) * 60 + int(n)# 秒数换算   
      # 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)



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


3251078313 发表于 2020-3-22 16:14:04

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/div/div/ul/div/li/span')    #找到每节课的时长所在位置
    play_times = []    #时长设置空列表
    for element in elements:    #依次获得播放时长
      # print(element.text)
      n = re.findall("-?\d*",element.text)    #提取其中的数字
      # print(n)
      m = int(n) * 60 + int(n)# 秒数换算   
      # 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)

(上传时出错了这里补一个)

浅笑心柔 发表于 2020-3-22 17:16:57

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

阿炜呀 发表于 2020-3-22 17:10:33


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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/div/div/ul/div/li/span')    #找到每节课的时长所在位置
    play_times = []    #时长设置空列表
    for element in elements:    #依次获得播放时长
      # print(element.text)
      n = re.findall("-?\d*",element.text)    #提取其中的数字
      # print(n)
      m = int(n) * 60 + int(n)# 秒数换算   
      # 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)

3251078313 发表于 2020-3-22 16:13:17

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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/div/div/ul/div/li/span')    #找到每节课的时长所在位置
    play_times = []    #时长设置空列表
    for element in elements:    #依次获得播放时长
      # print(element.text)
      n = re.findall("-?\d*",element.text)    #提取其中的数字
      # print(n)
      m = int(n) * 60 + int(n)# 秒数换算   
      # 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)
页: [1]
查看完整版本: 基于python和selenium的刷网课的代码。