IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【对于大学习的研究】(最新) -> 正文阅读

[Python知识库]【对于大学习的研究】(最新)

?🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥰 博客首页:knighthood2001

😗 欢迎点赞👍评论🗨?

?? 热爱python,期待与大家一同进步成长!!??


? ? ? ? 如何实现:通过selenium模块进行省市的选择,倍速播放,题目的答题,最后保存图片至桌面


目录

1模块准备

2定义桌面路径函数

3驱动浏览器

4省市选择?

5“开始学习”

6全部代码展示


1模块准备

import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import winreg
from selenium.webdriver.common.by import By

Select用来进行下拉框的选择,winreg用来获取桌面路径。


2定义桌面路径函数

笔者之前写过详细的内容,如下链接

python生成桌面路径(winreg)

以下是所需要的具体代码模板,照抄使用即可。

def desktop_path():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
    desktop = winreg.QueryValueEx(key, "Desktop")[0]
    # print(desktop)
    return desktop

3驱动浏览器

? ? ? ? selenium操作浏览器需要有ChromeDriver驱动来协助。具体安装及使用教程,本文就不细述了。

url = input('请输入网址:')
# https://h5.cyol.com/special/daxuexi/cod4a2tb5v/index.html
driver = webdriver.Chrome()
driver.get(url)
# 窗口最大化,便于操作
driver.maximize_window()
time.sleep(1)
# 进入iframe
driver.switch_to.frame(0)
driver = webdriver.Chrome()表示声明chrome浏览器
driver.get(url)表示用get()方法打开url
driver.maximize_window()表示窗口最大化,便于后续操作

接下来注意看,大学习页面中视频内容是嵌套在iframe中,因此我们要是需要定位视频中相应元素,就需要切换到该iframe。

# 进入iframe
driver.switch_to.frame(0)
driver.switch_to.frame(el/index),即它可以使用索引,因为该iframe是第一个出现的,所在位置为0。?

4省市选择?

接下来出现需要选择省市,使用Select()函数,括号中进行元素下拉框位置的定位,然后再进行

Select().select_by_visible_text('浙江省')

即通过具体文本内容进行选择下拉框选项,当然也可以根据value值进行选择。?

同理,市的选择也是如此方法。

Select(driver.find_element(by=By.CSS_SELECTOR, value='#city')).select_by_visible_text('绍兴市')

选择好之后,定位确定按钮并点击即可。

driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()

具体代码如下:

Select(driver.find_element(by=By.CSS_SELECTOR, value='#province')).select_by_visible_text('浙江省')
# time.sleep(1)
Select(driver.find_element(by=By.CSS_SELECTOR, value='#city')).select_by_visible_text('绍兴市')
# time.sleep(1)
# 确定按钮
driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()

5“开始学习”

代码如下:

# 开始学习
driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section0.topindex.ani > div.start_btn.on').click()
# ②倍速播放
time.sleep(2)
driver.execute_script("document.querySelector('video').playbackRate = 15.0;")
# ③
while True:
    try:
        # 是否出现题目
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1')
        time.sleep(0.1)
        # 选A
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.w1.option').click()
        time.sleep(0.1)
        # 确认按钮
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.button').click()
        # 继续学习
        time.sleep(2.5)
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.continue').click()
        # 15倍速
        driver.execute_script("document.querySelector('video').playbackRate = 15.0;")
    except:
        pass
    # ④
    try:
        if driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section3.topindex2'):
            time.sleep(1)
            a = time.time()
            # driver.get_screenshot_as_file(r'C:\Users\knighthood\OneDrive\桌面\{}.png'.format(a))
            driver.get_screenshot_as_file(r'{}\{}.png'.format(desktop_path(), a))
            break
    except:
        pass
driver.close()

讲解:

首先定位“开始学习”按钮并点击

接下来driver.execute_script()执行JS代码

driver.execute_script("document.querySelector('video').playbackRate = 15.0;")
document.querySelector()为选择器,可以根据class进行选择,然后用playbackRate将播放速度改为15倍。

接下来就判断是否出现题目,如果出现,选择A(因为题目作答是否正确对结果没啥影响,因此随意找个选项进行选择即可)。无论是否做对,最后都会出现继续听讲按钮,因此需要点击该按钮。?

最后如果出现完成学习的页面(如下图) ,则截图(以时间戳命名)保存至桌面。

    try:
        if driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section3.topindex2'):
            time.sleep(1)
            a = time.time()
            # driver.get_screenshot_as_file(r'C:\Users\knighthood\OneDrive\桌面\{}.png'.format(a))
            driver.get_screenshot_as_file(r'{}\{}.png'.format(desktop_path(), a))
            break
    except:
        pass

最后关闭浏览器即可。

driver.close()

注意:如果觉得用while True:try...except来判断元素是否能找到,大家可以去尝试一下element.is_display()函数来判断元素是否可见,如果可见,则进行后续操作。?


6全部代码展示

# -*- coding: utf-8-*-
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import winreg
from selenium.webdriver.common.by import By


def desktop_path():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
    desktop = winreg.QueryValueEx(key, "Desktop")[0]
    # print(desktop)
    return desktop

url = input('请输入网址:')
# https://h5.cyol.com/special/daxuexi/cod4a2tb5v/index.html
driver = webdriver.Chrome()
driver.get(url)
# 窗口最大化,便于操作
driver.maximize_window()
time.sleep(1)
# 进入iframe
driver.switch_to.frame(0)

time.sleep(1)
# 根据文本
Select(driver.find_element(by=By.CSS_SELECTOR, value='#province')).select_by_visible_text('浙江省')
# time.sleep(1)
Select(driver.find_element(by=By.CSS_SELECTOR, value='#city')).select_by_visible_text('绍兴市')
# time.sleep(1)
# 确定按钮
driver.find_element(by=By.XPATH, value='/html/body/div[2]/div[8]/div[3]').click()

# 开始学习
driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section0.topindex.ani > div.start_btn.on').click()
# 倍速播放
time.sleep(2)
driver.execute_script("document.querySelector('video').playbackRate = 15.0;")

while True:
    try:
        # 是否出现题目
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1')
        time.sleep(0.1)
        # 选A
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.w1.option').click()
        time.sleep(0.1)
        # 确认按钮
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.button').click()
        # 继续学习
        time.sleep(2.5)
        driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section1.topindex1 > div.continue').click()
        # 15倍速
        driver.execute_script("document.querySelector('video').playbackRate = 15.0;")
    except:
        pass
    try:
        if driver.find_element(by=By.CSS_SELECTOR, value='body > div.container > div.section3.topindex2'):
            time.sleep(1)
            a = time.time()
            # driver.get_screenshot_as_file(r'C:\Users\knighthood\OneDrive\桌面\{}.png'.format(a))
            driver.get_screenshot_as_file(r'{}\{}.png'.format(desktop_path(), a))
            break
    except:
        pass
driver.close()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:09:05  更:2022-05-07 11:09:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:33:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码