吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7147|回复: 55
收起左侧

[Python 原创] 某省干部网络学院 python selenium 自动学习

  [复制链接]
xq2581 发表于 2023-6-8 09:50
本帖最后由 xq2581 于 2023-6-8 09:52 编辑

第一次发帖,通过再群里学习和找资料   找到了通过python selenium 浏览器自动学习 某省干部网络学院 方法 非必修课程  课程先手动添加 程序循环自动播放
还未实现 部分FLASh  页面播放 欢迎大佬帮忙完善,谢谢!
[Python] 纯文本查看 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

#import requests

from time import sleep

# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome(service=Service(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'))
#wd = webdriver.Chrome()
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://wwwXXX.gov.cn/index.html')

sleep(5)
elements = wd.find_element(By.XPATH, "/html/body/div[3]/a[1]").click()
sleep(3)
elements = wd.find_element(By.XPATH, "//*[@id='username']")
elements.click()
elements.send_keys('你的账号')
sleep(3)
elements = wd.find_element(By.XPATH, '//*[@id="pwd"]')
elements.click()
elements.send_keys ('你的密码')
elements = wd.find_element(By.XPATH, "/html/body/div[2]/div/div[2]/form/div[3]/input").click()




sleep(5)
wd.get('https://www.XXX.gov.cn/student/course_myselect.do?searchType=2&menu=course')
sleep(5)

#循环N次播放视频        
i = 1
while i <= 30:
    #点击我要学习
    elements = wd.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[2]/div/div[2]/div[1]/div[2]/div[2]/input").click()
    
    #点击播放 /html/body/div/div[3]/div[2]
    sleep(3) 
    for handle in wd.window_handles:
        # 先切换到该窗口
        wd.switch_to.window(handle)
        # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
        if '播放中...' in wd.title:
            # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
            break

    sleep(2)
    wd.switch_to.frame("course_frm")
    sleep(1)
    wd.switch_to.frame("course_frame")
    sleep(2)
    #点击“开始学习”开始播放
    elements = wd.find_element(By.XPATH, "/html/body/div/div[3]/div[2]").click()
    sleep(700)
    #关闭子窗口
    wd.close()
    #变更selenium窗口,回到原来的窗口
    wd.switch_to.window(wd.window_handles[0])#对应的是第一个窗口
    sleep(2)
    wd.get('https://www.XXX.gov.cn/student/course_myselect.do?searchType=2&menu=course')
    sleep(2)
    print(i)
    i += 1

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
青山月楹 + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
why3316 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Sommuni 发表于 2023-6-14 09:46
wdhpsobb 发表于 2023-6-13 15:05
能详细说说吗,或者给个链接自已学

selenium的自动化有很多限制,只能记录你的操作但是不好应对特殊情况,比如说滑块,或者网络不好有元素加载慢等,甚至chormedriver还受到浏览器版本的限制,事实上并不通用,写刷课的脚本可以抓课时的上报接口,分析入参,一般会携带课程ID,观看时间等,找到上报接口直接还原请求就可以实现刷课了,一般只需要账号的Cookie或者token就可以的
Sommuni 发表于 2024-5-6 17:22
Scan 发表于 2024-5-6 15:58
我见过那种执行一个js代码,课就看完了,是如何操作的呢?

分场景:
1.后端不校验实际观看时间,只在最后视频结束的时候上报一个观看完成的请求,那就直接js发起这个观看完成的请求即可
2.后端不校验实际观看时间,js也有对应模拟操作的自动化功能,类似于拖动进度条,点击按钮这种,模拟人的操作将进度条拖到底让浏览器自己去请求观看完成的接口就行
3.后端校验实际观看时间,就要去定时按频率的去上报观看请求,一般会包含观看的时长、时间戳等

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Scan + 1 + 1 用心讨论,共获提升!

查看全部评分

kof21411 发表于 2023-6-8 12:58
FCGkitty 发表于 2023-6-8 13:18
你这课程添加在哪,视频不需要看么,打开就结束》
dork 发表于 2023-6-8 13:29
这种 方法有点土拨鼠
xfmiao 发表于 2023-6-8 13:47
河北干部网络学院?
dongjing520 发表于 2023-6-8 13:59
感谢分享
洞见未来 发表于 2023-6-8 17:03
这个站点没有验证码需要过?
 楼主| xq2581 发表于 2023-6-8 17:22
洞见未来 发表于 2023-6-8 17:03
这个站点没有验证码需要过?

没有验证吗
 楼主| xq2581 发表于 2023-6-8 17:24
FCGkitty 发表于 2023-6-8 13:18
你这课程添加在哪,视频不需要看么,打开就结束》

wd.get('https://www.XXX.gov.cn/student/course_myselect.do?searchType=2&menu=course') 这里就是视频列表   每次都是点击第一个
Sommuni 发表于 2023-6-9 11:32
该说不说,这方法有点。。。。。你可以抓个上报接口然后写个py脚本放服务器挂的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表