selenium应用之抓取b站黑马视频目录建立学习计划Excel

news2024/11/15 17:22:14

需求故事:
最近时间一下子多了起来,用来学习Java是最合适不过了,但是去b站看视频难免会没有自制力,于是决定用selenium来抓取b站黑马Java视频的目录创建一个学习计划的Excel,便于进行学习进度的管理。
注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.csdn.net/testleaf/article/details/130330760
多谢!!!

目录

    • 一、版本说明
    • 二、导入需要使用的库
    • 三、创建并初始化Excel
    • 四、打开网站并窗口最大化
    • 五、获取视频目录列表及其长度
    • 六、遍历视频目录列表内容并存入Excel
    • 七、Excel附加行头
    • 八、保存Excel
    • 九、对生成的Excel进行一些额外的操作
    • 十、后续操作

一、版本说明

Python:3.8.2
在这里插入图片描述
selenium:4.8.2
在这里插入图片描述
openpyxl:3.0.10
在这里插入图片描述
Chrome浏览器版本:112.0.5615.121(正式版本)(64 位)
在这里插入图片描述
chromedriver版本:112.0.5615.49
在这里插入图片描述

二、导入需要使用的库

from selenium import webdriver
from openpyxl import Workbook
from selenium.webdriver.common.by import By

三、创建并初始化Excel

wb = Workbook()
sheet = wb.create_sheet('20天学会Java', 0)

四、打开网站并窗口最大化

driver = webdriver.Chrome()
driver.get('https://www.bilibili.com/video/BV1Cv411372m') ## 打开网站
driver.maximize_window() ## 使浏览器的窗口最大化

五、获取视频目录列表及其长度

videoList = driver.find_elements(By.XPATH,'//ul[@class="list-box"]/li') ## 获取视频目录列表
listLength = len(videoList) ## 获取视频目录列表的长度

在这里插入图片描述

六、遍历视频目录列表内容并存入Excel

for listIndex in range(listLength):
    print(listIndex+1) ## 打印当前序号,便于知道进度
    element1 = driver.find_element(By.XPATH,'//ul[@class="list-box"]/li['+str(listIndex+1)+']/a/div/div/span[1]')
    element2 = driver.find_element(By.XPATH, '//ul[@class="list-box"]/li[' + str(listIndex + 1) + ']/a/div/div/span[2]')
    element3 = driver.find_element(By.XPATH, '//ul[@class="list-box"]/li[' + str(listIndex + 1) + ']/a/div/div[2]')
    element3List = element3.get_attribute('innerText').split(':')
    if(len(element3List)==2): ## 把时长转化为以秒为单位的形式
        element3Value = int(element3List[0])*60+int(element3List[1])
    else:
        element3Value = int(element3List[0]) * 3600 + int(element3List[1])*60+int(element3List[2])
    sheet.cell(row=listIndex + 3, column=1, value=element1.get_attribute('innerText'))
    sheet.cell(row=listIndex + 3, column=2, value=element2.get_attribute('innerText'))
    sheet.cell(row=listIndex + 3, column=3, value=str(element3.get_attribute('innerText')))
    sheet.cell(row=listIndex + 3, column=4, value=element3Value)

在这里插入图片描述

七、Excel附加行头

sheet.cell(row=2, column=1, value="序号")
sheet.cell(row=2, column=2, value="标题")
sheet.cell(row=2, column=3, value="时长")
sheet.cell(row=2, column=4, value="时长(秒)")
sheet.cell(row=2, column=5, value="完成情况")
sheet.cell(row=2, column=6, value="完成时间")

八、保存Excel

wb.save(filename=r'b站黑马视频学习进度表.xlsx')

九、对生成的Excel进行一些额外的操作

运行完上述代码,得到一个Excel文件:
在这里插入图片描述

调整单元格使其宽度自适应内容,双击一下这个东西就可以:
在这里插入图片描述

效果如下:
在这里插入图片描述

冻结至第2行:
在这里插入图片描述

在首行第2列插入数据:

="进度:"&ROUND(SUM(E3:E202)/SUM(D3:D202),4)*100&"%;已学:"&ROUND(SUM(E3:E202)/3600,2)&"小时;还剩:"&ROUND((SUM(D3:D202)-SUM(E3:E202))/3600,2)&"小时"

然后回车;

在这里插入图片描述
说明:
1、ROUND(A,2):将A保留两位小数
2、SUM(D3:D202):求D3到D202所有数据的和
3、&:连接字符串

效果:
在这里插入图片描述

十、后续操作

1、看完一集视频就在这里写上与左侧相等的数值:
在这里插入图片描述
第一行进度栏的数值会自动变化:
在这里插入图片描述

2、完成时间右边直接写上:

=NOW()

回车,然后复制后到左边粘贴为数值:
在这里插入图片描述

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【无模型自适应】基于紧格式动态线性化的无模型自适应控制matlab代码

例题来源:侯忠生教授的《无模型自适应控制:理论与应用》(2013年科学出版社)。 对应书本 4.2 单输入单输出系统(SISO)紧格式动态线性化(CFDL)的无模型自适应控制(MFAC) 例题4.1 题目要求 matlab代码 clc; clear all;%% 期望轨迹…

【opencv】图像数字化——矩阵的运算( 5 乘法运算)

5 乘法运算 5.1使用“*”运算符 对于Mat对象的乘法&#xff0c;两个Mat只能同时是float或者double类型&#xff0c;对于其它数据类型的矩阵乘法会报错src1的列数等于src2的行数mn * npmp #include <opencv2/core/core.hpp> #include<iostream> using namesp…

Android程序员向音视频进阶,有前景吗

随着移动互联网的普及和发展&#xff0c;Android开发成为了很多人的就业选择&#xff0c;希望在这个行业能获得自己的一席之地。然而&#xff0c;随着时间的推移&#xff0c;越来越多的人进入到了Android开发行业&#xff0c;就导致目前Android开发的工作越来越难找&#xff0c…

【博学谷学习记录】超强总结,用心分享 | 架构师 MinIO学习总结

文章目录 MinIO对象存储的概念计算机数据存储系统-架构模式对象存储的优势常见的对象存储系统/服务&#xff08;Object Storage Service&#xff0c;OSS&#xff09; MinIO简介特点高级特性小结 MinIO部署基于 linux Binary 部署 MinIO ServerMinIO数据组织结构MinIO Client**基…

【论文精读】Emergent Abilities of Large Language Models

1. Emergence 涌现&#xff08;emergence&#xff09;或称创发、突现、呈展、演生&#xff0c;是一种现象&#xff0c;为许多小实体相互作用后产生了大实体&#xff0c;而这个大实体展现了组成它的小实体所不具有的特性。 水分子聚集后组成了雪花是一个物理上的创发现象 扩大&…

C++ 类和对象(上)

类 面向对象的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。比如&#xff1a; 之前在数据结构初阶中&#xff0c;用C语言方式实现的栈&#xff0c;…

springboot入门和yaml数据格式和读取yaml型数据和多环境配置和命令行启动参数设置

springboot入门 搞掉了手动的spring&#xff0c;mybatis&#xff0c;springmvc配置类&#xff0c;只需要创建一个控制类即可 控制类&#xff1a; package com.itjh.controller;import org.springframework.web.bind.annotation.*;RestController RequestMapping("/book…

KDYZ-YM压敏电阻测试仪

一、概述 晶闸管的伏安特性是晶闸管的基本特性&#xff0c;这项特性的好坏&#xff0c;直接影响到器件在整机上的正常使用。因此&#xff0c;检测晶闸管的伏安特性在晶闸管器件的生产、经销及使用过程中都是十分重要的。 该测试仪的测试方法符合国标JB/T7624-94《整流二极管测试…

AI:人工智能领域AI工具产品集合分门别类(文本类、图片类、编程类、办公类、视频类、音频类、多模态类)的简介、使用方法(持续更新)之详细攻略

AI&#xff1a;人工智能领域AI工具产品集合分门别类(文本类、图片类、编程类、办公类、视频类、音频类、多模态类)的简介、使用方法(持续更新)之详细攻略 导读&#xff1a;由于ChatGPT、GPT-4近期火爆整个互联网&#xff0c;掀起了人工智能相关的二次开发应用的热潮&#xff0c…

MySQL 的 Replace into 与 Insert into on duplicate key update 真正的不同之处

相同点&#xff1a; &#xff08;1&#xff09;没有key的时候&#xff0c;replace与insert .. on deplicate udpate相同。 &#xff08;2&#xff09;有key的时候&#xff0c;都保留主键值&#xff0c;并且auto_increment自动1。 不同点 有key的时候&#xff0c;replace是dele…

Python数据结构与算法-RAS算法(p96)

一、RSA加密算法简介 1、加密算法概念 传统密码: 加密算法是秘密的 现代密码系统:加密算法是公开的&#xff0c;密钥是秘密的&#xff1b;&#xff08;密钥可能是随机生成的&#xff0c;与他人不一致&#xff09; 对称加密—加密和解密用的同一个密钥 非对称加密—加密和解密用…

Kali下部署-Nessus漏扫工具

Nessus 是全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件。 特点&#xff1a; 1、提供完整的电脑漏洞扫描服务&#xff0c;并随时更新漏洞库。 2、可以在本机或者是远端上进行遥控&#xff0c;进行系统的漏洞扫…

深入理解AMQP协议

一.AMQP 是什么 AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c; 高级消息队列协议&#xff09;是一个提供统一消息服务的 应用层标准高级 消息队列协议&#xff0c;是 应用层协议的一个 开放标准,为面向消息的中间件设计&#xff0c;是一个进程间传递 异步消息…

线性模型的介绍

一、背景 在一个理想的连续世界中&#xff0c;任何非线性的东西都可以被线性的东西来拟合&#xff0c;所以理论上线性模型可以模拟物理世界中的绝大多数现象。 线性模型&#xff08;Linear Model&#xff09;是机器学习中应用最广泛的模型&#xff0c;指通过样本特征的线性组…

生产力提速增效的4大敲门砖

引言&#xff1a; 本文章将分四大板块介绍提高程序员生产力的方案&#xff0c;最大化利用你的IDE &#xff0c;其中Live Template篇&#xff0c;插件篇非常值的一看&#xff0c; 用好才能提速增效 Productity Guide篇 Postfix Completion篇 Live Template篇 插件篇 Product…

NGFW的protal认证实验

实验topo 用到工具&#xff1a;ensp&#xff0c;kali&#xff0c;cloud云的网段是192.168.43.0&#xff1b;连接cloud的g0/0/0地址就是你登录web&#xff0c;protal的地址 实验说明&#xff1a;建议不在真机上面配置直接用&#xff0c;因为真机不稳定。这里用kali当真机&#x…

【网络应用开发】实验5—— JDBC数据库访问与DAO设计模式

目录 JDBC数据库访问与DAO设计模式预习报告 一、实验目的 二、实验原理 三、实验预习内容 1. JDBC常用的类对象与接口有哪些&#xff1f;它们的功能如何&#xff1f; 2.使用数据源访问数据库的基本思想是什么&#xff1f;这样做有什么好处&#xff1f; 3.什么是DAO&am…

vscode使用虚拟环境

我的conda没有添加入path&#xff0c;每次打开总是报错 一、选择对应虚拟环境的解释器 1.点击vscode的右下角这里 2.点击后可能会在vscode上方出现下图样子&#xff0c;如果出现下图&#xff0c;则点击第二项Select at workspace level&#xff0c; 3.接着出现下图样式&#…

2022年营收破百亿,零跑汽车展现超强实力

此前&#xff0c;零跑已正式公布了2022年的财务数据。可以看到&#xff0c;零跑去年的营收破百亿&#xff0c;增速将近300%&#xff0c;这一成绩在汽车界是相当优越的。说到为何零跑能够实现如此快速的成长&#xff0c;那就不得不提其全域自研的核心优势。 如今&#xff0c;无论…

有始有终的编码原则

基本情况 在程序员的修炼之道之中&#xff0c;说到&#xff1a; 这个建议能简单地应用到大多数场合。简单说就是&#xff0c;分配资源的函 数或对象&#xff0c;对释放资源应负有责任。 这其实就是我们常说的谁分配的就谁负责释放&#xff0c;这也是内存释放的一个原则&#x…