Python 爬虫之下载视频(一)

爬取某平台视频


文章目录

  • 爬取某平台视频
  • 前言
  • 一、大致内容
  • 二、基本思路
  • 三、代码编写
    • 1.引入库
    • 2.前期准备
    • 3.获取视频标题和地址
    • 3.下载保存视频
  • 总结


前言

今天写个从好K视频平台爬取正在播放的视频,并下载保存到本地。

注意:建议大家先看看我之前的比较简单的基础教程文章,要不可能看起来会有点费劲哦。


一、大致内容

通过用户输入某个视频的地址,然后程序会根据这个地址,自动获取视频的标题和下载视频,并将标题命名为视频文件的名称。
注意:仅限该平台哦。


二、基本思路

  • 第一步:获取视频的网页地址。(需要手动获取输入)
  • 第二步:关闭每次打开弹出的登陆窗口,并获取视频的标题和下载地址。(程序自动执行)
  • 第三步,下载视频并以标题来命名下载的视频。(程序自动执行)

三、代码编写

下面所用到的库,记得先用pip等命令安装一下哈。

1.引入库

代码如下:

# 用来请求网页
import requests# 用来解析网页
from selenium import webdriver# 用来定位某个元素在网页中的位置
from selenium.webdriver.common.by import By# 用来记录时间或者短暂等待
import time

2.前期准备

代码如下:

# 创建一个对象实例,用来表示用哪个浏览器爬取
driver = webdriver.Firefox()
# 某个视频的地址
driver.get("https://haokan.baidu.com/v?vid=7073936468876035706&tab=recommend")
# 等待一下,等打开网页
time.sleep(8)# 页面打开会弹出一个登录窗口
close = driver.find_element(by=By.CSS_SELECTOR, value='.close-btn')
# 等登录窗口弹出来
time.sleep(5)
# 关闭弹出的登录窗口
close.click()

主要讲一下下半部分代码的的作用吧,请看下图(通过检查元素获取其位置,然后用代码定位进行操作):
在这里插入图片描述


3.获取视频标题和地址

代码如下:

# 获取视频地址所在的位置
video = driver.find_element(by=By.CSS_SELECTOR, value='.art-video')
# 获取到该视频地址
video_url = video.get_attribute('src')# 获取视频的标题
video_name = driver.find_element(by=By.CSS_SELECTOR, value='.videoinfo-title')

下面我用图片给大家解释吧,这样大家容易理解一点。

  1. 获取视频下载地址,首先各位先复制上面代码 art-video ,然后接着下图操作:
    在这里插入图片描述

  2. 获取视频标题。
    在这里插入图片描述


3.下载保存视频

代码如下:

# 发送HEAD请求,我们可以获取到服务器返回的关于资源的一些元数据,例如内容类型、内容长度、最后修改日期等
response = requests.head(short_video_url)
# 获取视频的大小(以字节为单位)
content_length = response.headers.get('content-length')
print(content_length)# 设置stream=True参数以流的方式下载
mp4 = requests.get(short_video_url, stream=True)
with open(f'{video_name.text}.mp4', 'wb') as f:# 写入文件时,使用(chunk_size=1024)这种方式按块读取和写入for chunk in mp4.iter_content(chunk_size=1024):f.write(chunk)

上半部分代码说的是,在不下载视频的前提下,如何去获取视频的内容类型、内容长度、最后修改日期等。

下半部分代码说的是,让视频以流的形式下载,而不是一整块下载保存;同时,按块的方式一点一点保存到视频文件中去。


总结

本人实测有效,可以下载下来。但是清晰度不能保证,因为我没有登陆哈哈哈哈哈。基本环境是Python 3.11.6 版本的环境,注意哦要不然程序可能运行不起来。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

u盘加密软件合辑丨u盘怎么上锁某个文件夹

毫无疑问,U盘是我们生活中最常使用的移动储存设备,常见的U盘普遍没有使用限制,任何人都可以浏览其中的数据,这就可能导致数据泄密和隐私泄露,那么普通U盘怎么变成加密U盘呢? 一、上锁某个U盘文件夹 可以将…

【线性代数】两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗?

一、问题 两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗? 二、答案 不一定,当两个向量组中的向量个数也相同时,结论才成立.若向量个数不相同,结论不成立. 例如: 向量组一:(1,0),(0,1) 向量组二:(1,0),(0,1),(1,1) 两…

【大数据实训】python石油大数据可视化(八)

2014到2020年石油加工产品产量数据处理分析 一、任务描述 石油是工业的命脉。 一直到2020年,我国原油产量基本处于平稳的状态,大部分原油来自国外进口;中国原油加工产量在华东、东北地区占比较大,华南地区相对较少。原油的加工…

去掉乘法运算的加法移位神经网络架构

[CVPR 2020] AdderNet: Do We Really Need Multiplications in Deep Learning? 代码:https://github.com/huawei-noah/AdderNet/tree/master 核心贡献 用filter与input feature之间的L1-范数距离作为“卷积层”的输出为了提升模型性能,提出全精度梯度…

CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem:大屏高宽自适应问题

前言 继上篇《CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem》。 发现一个有趣的问题,文件 rem.js 中按照宽度设置自适应,适用于大多数页面,但当遇到大屏就不那么合适了。 问题 使用宽度,注意代码第2 和 4 行:…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价(中位数贪心 回文数判断)2968. 执行操作使频率分数最大(中位数贪心 前缀和 滑窗) 复盘与一周总结 wa穿了第3题,赛时其实想到了思路:中位数贪心…

C#上位机与欧姆龙PLC的通信03----创建项目工程

1、创建仿真PLC 这是一款CP1H-X40DR-A的PLC,呆会后面创建工程的时候需要与这个类型的PLC类型一致,否则程序下载不到PLC上。 2、创建虚拟串口 首先安装,这个用来创建虚拟串口来模拟真实的串口,也就是上位机上有那种COM口&#xf…

【SplaTAM】基于RGB-D类型SplaTAM的定位与重建

SplaTAM ubuntu配置与运行记录 1. 资料收集2. 环境配置与运行注意问题3. 在线运行 近期各种定会涌现出一种新的基于高斯的方法,备受关注,这里我们也来学习下sota效果的slam用于定位和重建。 1. 资料收集 coda link3D Gaussians 2.1 Dynamic 3D Gaussian…

百度侯震宇:AI原生与大模型将从三个层面重构云计算

12月20日,2023百度云智大会智算大会在北京举办,大会以「大模型重构云计算,Cloud for AI」为主题,深度聚焦大模型引发的云计算变革。 百度智能云表示,为满足大模型落地需求,正在基于「云智一体」战略重构…

linux 驱动——私有数据

文章目录 linux 驱动中的私有数据container_of驱动程序数据结构定义 应用程序模块使用 linux 驱动中的私有数据 前面的程序中,都只申请了一个从设备号,这里使用 alloc_chrdev_region 分配两个设备号,这两个设备共用 ops 方法。 所以需要在 …

企业网络常用技术-快速生成树RSTP原理与配置

STP协议虽然能够解决环路问题,但是收敛速度慢,影响了用户通信质量。如果STP网络的拓扑结构频繁变化,网络也会频繁失去连通性,从而导致用户通信频繁中断。IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid …

【C++高阶(八)】单例模式特殊类的设计

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 单例模式 1. 前言2. 设计一个不能被拷贝/继承的…

3d游戏公司选择云电脑进行云办公有哪些优势

随着游戏行业的不断发展,很多的游戏制作公司也遇到了很多的难题,比如硬件更换成本高、团队协同难以及效率低下等问题,那么如何解决游戏行业面临的这些行业痛点,以及游戏制作公司选择云电脑进行云办公有哪些优势?一起来…

麒麟V10 ARM 离线生成RabbitMQ docker镜像并上传Harbor私有仓库

第一步在外网主机执行: docker pull arm64v8/rabbitmq:3.8.9-management 将下载的镜像打包给离线主机集群使用 在指定目录下执行打包命令: 执行: docker save -o rabbitmq_arm3.8.9.tar arm64v8/rabbitmq:3.8.9-management 如果懒得打包…

A01、关于jvm执行子系统

1、Class 类文件结构 1.1、Java跨平台的基础 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石,也是语言无关性的基础。Java虚拟机不和包括Java在内的任何语言绑定,它只与 “…

OpenCV消除高亮illuminationChange函数的使用

学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为1129字,预计阅读4分钟 导语 上一篇《OpenCV极坐标变换函数warpPolar的使用》中介绍了极坐标变换的使用,文中提到过因为手机拍的照片,部分地方反光厉害。OpenCV本身也有一…

FFmepeg——视频处理工具安装以及简单命令学习。

FFmpeg 是一个免费、开源且高度可定制的多媒体处理工具,它是一个强大的跨平台框架,用于处理音频、视频、多媒体流和图像。FFmpeg 的主要功能包括解码、编码、转码、流处理、多路复用、分离、合并、过滤等,支持多种音视频格式,包括…

外卖系统海外版:技术智能引领全球美食新潮流

随着全球数字化浪潮的推动,外卖系统海外版不仅是食客们品味美食的便捷通道,更是技术智能在美食领域的引领者。本文将深入剖析其背后的技术实现,揭开代码带来的美食革新。 多语言支持:构建全球美食沟通桥梁 def multilingual_su…

排序算法——快排

快速排序算法最早是由图灵奖获得者Tony Hoare设计出来的,他在形式化方法理论以 及ALGOL.60编程语言的发明中都有卓越的贡献,是20世纪最伟大的计算机科学家之—。 而这快速排序算法只是他众多贡献中的—个小发明而已。 快速排序(Quick Sort)的基本算法思…

最新国内可用使用GPT4.0,GPT语音对话,Midjourney绘画,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GP…