如何编写爬取网络上的视频文件

news2025/4/18 12:58:47

网络爬虫程序,可以爬取某些网站上的视频,音频,图片或其它文件,然后保存到本地电脑上;
有时在工作中非常有用,那在技术上如何进行爬取文件和保存到本地呢?下面以python语言为例,讲解python爬取视频文件保存到本地电脑的思路和简要过程;

一,Python安装,
python程序执行必须基于电脑中首先安装python;
python下载地址:https://www.python.org
python文档下载地址:https://www.python.org/doc/
python安装参考url:https://www.runoob.com/python3/python3-install.html
这个下载参考别人自行安装即可,不再过多讲解;

二,python IDE的安装,
python安装了之后,可以运行python程序了,但编写python程序还需要借助开发环境(IDE),
其中pycharm是非常好的python IDE,用来开发python程序非常方便好用;
PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/
PyCharm 安装地址:http://www.runoob.com/w3cnote/pycharm-windows-install.html
其安装过程自行参考网上教程;

三,爬虫程序开发的思路和简要过程,

1,安装必要的模块,
#更新pip版本,该功能用于安装其它模组
pip install --upgrade pip

#安装视频剪辑模组
pip install moviepy

#安装请求模块,一般已经安装
pip install requests

安装方法,winOS下是启动DOS窗口,分别执行上面命令,等待下载完成即可;

2,爬取原理,
如果我们知道某个视频的网址,直接使用python程序请求,返回的视频内容按一定格式存到本地电脑即可,对,原理就是这么简单;

(1)那如何知道视频的网址呢?注意这里说得是视频的网址,不是网页的网址,可以有有多种方式,可通过抓包工具获取视频网址,也可以通过按浏览器F12查看页面HTML的视频标签内容获得,但这种多数可能看不到,还可以浏览器F12切换到网络请求项,然后刷新有视频的页面,这个肯定会有视频请求的网址,然后观察分析获取对应视频url即可,这一步核心就是找视频URL,不管通过什么方式,找到视频链接即可;
音频,图片或其它文件的网址查找方法也是一样方式,其中图片还可以根据图片的html元素特征,使用正则方式提取出来;

(2)请求资源,找到视频网址后,就是请求对应的视频资源,python语言大致如下:

import requests

videoUrl = "http://www.xxx.com/xpath/yvideo"
videoRes = requests.get(videoUrl)
print(videoRes.status_code)

(3)权限和访问限制问题,当我们上面(2)请求后,发现返回请求状态码很可能是403,即禁止访问,主要是权限和访问限制相关问题,一般网站都有一定的权限和访问限制等问题,如有些必须登录访问,有些限制程序自动化访问,所以这个时候可以使用参数伪装请求头和referer信息,扮演模拟像是用户在浏览器发起的请求,对不须登录的到此即可,如果还有需要登录才能访问的页面,则首先需要真实注册登录之后,浏览器F12,观察获取登录关键信息,如token等信息,然后模拟真实请求,在python中设置登录信息到合适的参数或请求头位置,这一步关键是设置合理的请求头或登录信息模拟真实用户在浏览器发起的请求,目的解决权限和访问限制问题,例如下面:

import requests

"""
普及一下:
user-agent: 浏览器以及操作系统的一些信息,
referer:关联来源页,
cookie:用户标识,
在模拟用户浏览器请求一般需要前两个参数,登录再需要后一个参数,
注意:没有请求头和referer信息的请求一般被认定为程序化请求,
按浏览器F12再网络请求项的请求头可以看到,复制过来即可;
登录信息一般用到cookie或localstorage,同样浏览器F12再网络请求项的请求头或aplication项
"""
reqHeaders = {"user-agent":"...","referer":"..."}
reqCookies = {"token":"xxx","userName":"yyy"}
videoUrl = "http://www.xxx.com/xpath/yvideo"
videoRes = requests.get(videoUrl, headers = reqHeaders, cookies = reqCookies)

(4)保存资源,在上面第(3)步之后,一般都请求成功了,请求到的资源内容,使用python语言按某种格式文件写到本地某路径中保存起来,例如:

import requests
import os

"""
普及一下:
user-agent: 浏览器以及操作系统的一些信息,
referer:关联来源页,
cookie:用户标识,
在模拟用户浏览器请求一般需要前两个参数,登录再需要后一个参数,
注意:没有请求头和referer信息的请求一般被认定为程序化请求,
按浏览器F12再网络请求项的请求头可以看到,复制过来即可;
登录信息一般用到cookie或localstorage,同样浏览器F12再网络请求项的请求头或aplication项
"""
reqHeaders = {"user-agent":"...","referer":"..."}
reqCookies = {"token":"xxx","userName":"yyy"}

#建立存储路径,winOS系统下假设如下路径
savePath = "d:\\myTempFile"
if not os.path.exists(savePath):
	os.makedirs(savePath)
	
# 视频文件(后缀名.mp4)的请求,下载和保存
videoUrl = "http://www.xxx.com/xpath/yvideo"
videoRes = requests.get(videoUrl, headers = reqHeaders, cookies = reqCookies)
videoPath = savePath + os.sep + "myVideo.mp4"
# 向打开的文件写入请求返回的视频数据二进制内容
open(videoPath,"wb").write(videoRes.content)

print(res.status_code)

到此视频文件已经下载下来;

(5)音频文件下载,上面下载的视频有时是没有声音的,主要是因为有些网站把视频内容和
音频内容分离成两个文件,所以还需要按上面的步骤找到音频文件的网址,然后请求下载音频资源,保存到本地电脑某路径中,例如下面:

import requests
import os

"""
普及一下:
user-agent: 浏览器以及操作系统的一些信息,
referer:关联来源页,
cookie:用户标识,
在模拟用户浏览器请求一般需要前两个参数,登录再需要后一个参数,
注意:没有请求头和referer信息的请求一般被认定为程序化请求,
按浏览器F12再网络请求项的请求头可以看到,复制过来即可;
登录信息一般用到cookie或localstorage,同样浏览器F12再网络请求项的请求头或aplication项
"""
reqHeaders = {"user-agent":"...","referer":"..."}
reqCookies = {"token":"xxx","userName":"yyy"}
#建立存储路径,winOS系统下假设如下路径
savePath = "d:\\myTempFile"
if not os.path.exists(savePath):
	os.makedirs(savePath)
	
# 视频文件(后缀名.mp4)的请求,下载和保存
videoUrl = "http://www.xxx.com/xpath/yvideo"
videoRes = requests.get(videoUrl, headers = reqHeaders, cookies = reqCookies)
videoPath = savePath + os.sep + "myVideo.mp4"
# 向打开的文件写入请求返回的视频数据二进制内容
open(videoPath,"wb").write(videoRes.content)	

# 音频文件(后缀名.mp3)的请求,下载和保存
audioUrl = "http://www.xxx.com/xpath/yaudio"
audioRes = requests.get(audioUrl, headers = reqHeaders, cookies = reqCookies)
audioPath = savePath + os.sep + "myAudio.mp3"
# 向打开的文件写入请求返回的音频数据二进制内容
open(audioPath,"wb").write(audioRes.content)	

print(videoRes.status_code)

(6)视频音频合并成最终含有声音的视频文件,借助 moviepy 模块进行处理,完整示例代码参考如下:

from moviepy.editor impoprt *
import requests
import os

"""
普及一下:
user-agent: 浏览器以及操作系统的一些信息,
referer:关联来源页,
cookie:用户标识,
在模拟用户浏览器请求一般需要前两个参数,登录再需要后一个参数,
注意:没有请求头和referer信息的请求一般被认定为程序化请求,
按浏览器F12再网络请求项的请求头可以看到,复制过来即可;
登录信息一般用到cookie或localstorage,同样浏览器F12再网络请求项的请求头或aplication项
"""
reqHeaders = {"user-agent":"...","referer":"..."}
reqCookies = {"token":"xxx","userName":"yyy"}
#建立存储路径,winOS系统下假设如下路径
savePath = "d:\\myTempFile"
if not os.path.exists(savePath):
	os.makedirs(savePath)
	
# 视频文件(后缀名.mp4)的请求,下载和保存
videoUrl = "http://www.xxx.com/xpath/yvideo"
videoRes = requests.get(videoUrl, headers = reqHeaders, cookies = reqCookies)
videoPath = savePath + os.sep + "myVideo.mp4"
# 向打开的文件写入请求返回的视频数据二进制内容
open(videoPath,"wb").write(videoRes.content)
print("视频请求下载状态码:" + videoRes.status_code)

# 音频文件(后缀名.mp3)的请求,下载和保存
audioUrl = "http://www.xxx.com/xpath/yaudio"
audioRes = requests.get(audioUrl, headers = reqHeaders, cookies = reqCookies)
audioPath = savePath + os.sep + "myAudio.mp3"
# 向打开的文件写入请求返回的音频数据二进制内容
open(audioPath,"wb").write(audioRes.content)
print("音频请求下载状态码:" + audioRes.status_code)

# 把视频音频文件合并成最终含有声音的视频文件
videoClip = VideoFileClip(videoPath)
audioClip = AudioFileClip(audioPath)
finaVideo = videoClip.set_audio(audioClip)
finaVideoPath = savePath + os.sep + "finaVideo.mp4"
finaVideo.write_videofile(finaVideoPath)
print("视频音频合并完成,路径为:" + finaVideoPath)

以上是使用python语言进行爬取合并同时保存视频频频的例子对图片或其它文件估计还更简单,如果爬取网页的某些文本字符串内容,相似的,请求页面,返回html,然后分析目标文本字符所属html标签的特征,使用字符处理或正则匹配规则,提取出所需的文本文字内容,然后写入某文件即可;

设计爬取功能函数,使用定时任务,按一定合理频次调用爬取功能函数,即可工程化自动完成任务了;

需要注意的是,如果高频非法调用网络爬虫程序去爬取某些网站,这些可能涉及违法行为,也可能导致服务器瘫痪,所以在学习爬虫程序,仅建议合理使用,不能做违法的事,否则发现就被送去踩缝纫机了,切记;

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

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

相关文章

TCP 如何在网络 “江湖” 立威建交?

一、特点: (一)面向连接 在进行数据传输之前,TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话,双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成,确保通信双方都…

【小白训练日记——2025/4/15】

变化检测常用的性能指标 变化检测(Change Detection)的性能评估依赖于多种指标,每种指标从不同角度衡量模型的准确性。以下是常用的性能指标及其含义: 1. 混淆矩阵(Confusion Matrix) 定义:统…

数据结构——二叉树(中)

接上一篇,上一篇主要讲解了关于二叉树的基本知识,也是为了接下来讲解关于堆结构和链式二叉树结构打基础,其实无论是堆结构还是链式二叉树结构,都是二叉树的存储结构,那么今天这一篇主要讲解关于堆结构的实现与应用 堆…

02-MySQL 面试题-mk

文章目录 1.mysql 有哪些存储引擎、区别是什么?1.如何定位慢查询?2.SQL语句执行很慢,如何分析?3.索引概念以及索引底层的数据结构4.什么是聚簇索引什么是非聚簇索引?5.知道什么叫覆盖索引嘛 ?6.索引创建原则有哪些?7.什么情况下索引会失效 ?8.谈一谈你对sql的优化的经验…

#include<bits/stdc++.h>

#include<bits/stdc.h> 是 C 中一个特殊的头文件&#xff0c;其作用如下&#xff1a; 核心作用 ​​包含所有标准库头文件​​ 该头文件会自动引入 C 标准库中的几乎全部头文件&#xff08;如 <iostream>、<vector>、<algorithm> 等&#xff09;&…

在企业级部署中如何优化NVIDIA GPU和容器环境配置:最佳实践与常见误区20250414

在企业级部署中如何优化NVIDIA GPU和容器环境配置&#xff1a;最佳实践与常见误区 引言 随着AI和深度学习技术的迅速发展&#xff0c;企业对GPU加速计算的需求愈加迫切。在此过程中&#xff0c;如何高效地配置宿主机与容器化环境&#xff0c;特别是利用NVIDIA GPU和相关工具&…

Spring Boot 项目三种打印日志的方法详解。Logger,log,logger 解读。

目录 一. 打印日志的常见三种方法&#xff1f; 1.1 手动创建 Logger 对象&#xff08;基于SLF4J API&#xff09; 1.2 使用 Lombok 插件的 Slf4j 注解 1.3 使用 Spring 的 Log 接口&#xff08;使用频率较低&#xff09; 二. 常见的 Logger&#xff0c;logger&#xff0c;…

[react]Next.js之自适应布局和高清屏幕适配解决方案

序言 阅读前首先了解即将要用到的两个包的作用 1.postcss-pxtorem 自动将 CSS 中的 px 单位转换为 rem 单位按照设计稿尺寸直接写 px 值&#xff0c;由插件自动计算 rem 值 2.amfe-flexible 动态设置根元素的 font-size&#xff08;即 1rem 的值&#xff09;根据设备屏幕宽度和…

STM32H503CB升级BootLoader

首先&#xff0c;使用SWD接口&#xff0c;ST-LINK连接电脑和板子。 安装SetupSTM32CubeProgrammer_win64 版本2.19。 以下是接线和软件操作截图。

在Apple Silicon上部署Spark-TTS:四大核心库的技术魔法解析!!!

在Apple Silicon上部署Spark-TTS&#xff1a;四大核心库的技术魔法解析 &#x1f680; &#xff08;M2芯片实测&#xff5c;Python 3.12.9PyTorch 2.6.0全流程解析&#xff09; 一、核心库功能全景图 &#x1f50d; 在Spark-TTS的部署过程中&#xff0c;pip install numpy li…

VMWare 16 PRO 安装 Rocky8 并部署 MySQL8

VMWare 16 PRO 安装 Rocky8 并部署 MySQL8 一.Rocky OS 下载1.官网二.配置 Rocky1.创建新的虚拟机2.稍后安装系统3.选择系统模板4.设置名字和位置5.设置大小6.自定义硬件设置核心、运存和系统镜像7.完成三.启动安装1.上下键直接选择安装2.回车安装3.设置分区(默认即可)和 roo…

cursor如何回退一键回退多个文件的修改

当我们使用 Cursor 写代码时&#xff0c;起初可能操作得很顺利&#xff0c;但某次更改或许会让代码变得面目全非。这时候如果没有使用 Git 该怎么办呢&#xff1f;别担心&#xff0c;Cursor 已经为我们考虑到了。 具体的操作如下&#xff1a; 当我们要取消某次操作时&#xf…

基于RV1126开发板的口罩识别算法开发

1. 口罩识别简介 口罩识别是一种基于深度学习的判断人员有没有戴口罩的分类算法&#xff0c;能广泛的用于安防、生产安全等多种场景。本算法先基于人脸检测和人脸标准化获取的标准人脸&#xff0c;然后输入到口罩识别分类算法进行识别。 本人脸检测算法在数据集表现如下所示&am…

PyCharm显示主菜单和工具栏

显示主菜单 新版 PyCharm 是不显示主菜单的&#xff0c;要想显示主菜单和工具栏&#xff0c;则通过 “视图” → “外观” &#xff0c;勾选 “在单独的工具栏中显示主菜单” 和 “工具栏” 即可。 设置工具栏 此时工具栏里并没有什么工具&#xff0c;因此我们需要自定义工具…

Java工程行业管理软件源码 - 全面的项目管理工具 - 工程项目模块与功能一览

工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 项目背景 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管理的提升提…

Redis 高可用集群搭建与优化实践

在分布式系统中,缓存技术用于提升性能和响应速度。 Redis 作为一款高性能的键值存储系统,广泛应用于缓存、消息队列和会话管理等场景。随着业务规模的扩大,单机 Redis 的性能和可用性逐渐无法满足需求。 因此,搭建高可用的 Redis 集群可以解决这一问题。我将详细介绍 Red…

【AI大模型】基于阿里百炼大模型进行调用

目录 一、认识阿里云百炼 模型广场 创建自己的模型 二、AI扩图示例 1、开头服务、设置秘钥 2、选择HTTP方式调用流程 3、创建任务请求示例 4、发送http请求提交任务 5、查看任务进度的流程设计 6、后端查看任务进度代码 三、总结 大家好&#xff0c;我是jstart千语…

【神经网络结构的组成】深入理解 转置卷积与转置卷积核

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 …

MyBatis-plus笔记 (上)

简介 [MyBatis-Plus]&#xff08;简称 MP&#xff09;是一个 [MyBatis]的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 mybatis-plus总结&#xff1a; 注意&#xff1a;mybatis-puls仅局限于单表操作。 自动生成单表的C…

大模型微调数据集怎么搞?基于easydataset实现文档转换问答对json数据集!

微调的难点之一在与数据集。本文介绍一种将文档转换为问答数据集的方法&#xff0c;超级快&#xff01; 上图左侧是我的原文档&#xff0c;右侧是我基于文档生成的数据集。 原理是通过将文档片段发送给ollama本地模型&#xff0c;然后本地模型生成有关问题&#xff0c;并基于文…