爬虫实战学习笔记_7 【实战】模拟下载页面视频(模板)

import requests     # 导入requests模块
import re           # 导入re模块
import os           # 导入系统os模块# 实现发送网络请求,返回响应结果
def send_request(url,headers):response = requests.get(url=url,headers=headers)  # 发送网络请求if response.status_code==200:html_str = response.text                 # 获取HTML代码return html_str                          # 返回HTML代码# 实现获取视频标题、地址并下载视频
def download_video(html_str):video_urls = re.findall('<source src="(.*?)"',html_str)   # 提取当前页面中所有视频地址# 提取所有视频的标题文字titles = re.findall('<div class="content">\n<span>\n\n\n(.*?)\n\n</span>\n\n</div>',html_str)for title,video_url in zip(titles,video_urls):size = 0  # 记录每次写入大小的变量video_url= 'https:'+video_url    # 将视频地址补充完整video_response = requests.get(url=video_url,headers=headers)    # 向视频下载地址发送网络请求chunk_size = 10                             # 单次请求最大值content_size = int(video_response.headers['content-length'])    # 获取视频内容的总大小if not os.path.exists('video'):               # 判断pic文件夹是否存在os.mkdir('video')                        # 创建pic文件夹with open('video/'+title+'.mp4','wb') as f:# 循环写入,实现一段一段的写for data in video_response.iter_content(chunk_size=chunk_size):f.write(data)             # 写入视频数据f.flush()                 # 刷新缓存size+=len(data)           # 叠加计算每次写入数据的变化# 打印下载进度print('\r'+title+'视频文件下载进度:%d%%(%d/%d)'%(float(size/content_size*100),size,content_size),end=' ')if __name__ == '__main__':# 定义请求地址url = 'https://www.某视频网站.com/video/'# 定义请求头信息headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4503.5 Safari/537.36'}html_str = send_request(url=url,headers=headers)  # 调用发送网络请求的方法download_video(html_str=html_str)                 # 调用下载视频的方法

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

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

相关文章

create_proc_read_entry中函数的说名

原型 &#xff1a;struct proc_dir_entry *create_proc_read_entry (const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void *data);说明 &#xff1a;name : 要创建的文件名&#xff1b;mode : 文件掩码&#xff0c;为 0 则按照系统默认…

将一个java工程导入到myeclipse应该注意的地方

[原文]http://www.cnblogs.com/ht2411/articles/5471130.html 1. 最好新建一个myeclipse工程&#xff0c;然后从从文件系统导入该工程文件。 原因&#xff1a;很多项目可能是eclipse创建的&#xff0c;或者myeclipse的版本不一致&#xff0c;这样可能导致很多奇怪的现象&#x…

【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

strace调试(Linux Device Driver)

strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界&#xff0c;进程不能直接访问硬件设备&#xff0c;当进程需要访问硬件设备(比如读取磁盘文件&#xff0c;接收网络数据等等)时&#xff0c;必须由用户态模式切换至内核态模式&#xff0c;通 过系统调用访问硬…

【Pytorch神经网络基础理论篇】 07 线性回归 + 基础优化算法

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

浅谈命令查询职责分离(CQRS)模式

在常用的三层架构中&#xff0c;通常都是通过数据访问层来修改或者查询数据&#xff0c;一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题&#xff0c;但是随着系统逻辑变得复杂&#xff0c;用户增多&#xff0c;这种设计就会出现一些性能问题。…

Linux shell sed awk

&#xff11;、我们的平台编译kernel的时候总是要输入项目名称&#xff0c;很麻烦 ################################################ ## Compile kernel and pack it into boot.img ## ################################################ #!/bin/shPROJECT$1 echo $PROJEC…

【Pytorch神经网络实战案例】20 基于Cora数据集实现图卷积神经网络论文分类

1 案例说明&#xff08;图卷积神经网络&#xff09; CORA数据集里面含有每一篇论文的关键词以及分类信息&#xff0c;同时还有论文间互相引用的信息。搭建AI模型&#xff0c;对数据集中的论文信息进行分析&#xff0c;根据已有论文的分类特征&#xff0c;从而预测出未知分类的…

mybatis基础学习3---特殊sql语句(备忘)

1&#xff1a; 2&#xff1a; 3:resultMap的用法 转载于:https://www.cnblogs.com/kaiwen/p/6486283.html

使用gdb

1、gdb调试 gdb 对于看系统内部是非常有用. 在这个级别精通调试器的使用要求对 gdb 命令有信心, 需要理解目标平台的汇编代码, 以及对应源码和优化的汇编码的能力. LINUX DEVICE DRIVERS,3RD EDITION 调试器必须把内核作为一个应用程序来调用. 除了指定内核映象的文件名之外…

【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类

Multi-sample Dropout是Dropout的一个变种方法&#xff0c;该方法比普通Dropout的泛化能力更好&#xff0c;同时又可以缩短模型的训练时间。XMuli-sampleDropout还可以降低训练集和验证集的错误率和损失&#xff0c;参见的论文编号为arXⅳ:1905.09788,2019 1 实例说明 本例就…

linux自旋锁

1、为什么要有自旋锁 我们写驱动代码的时候,往往忽略这一点,然后版本发布后会经常遇到一些异常的问题,资源的竞争相当重要,很容易出现空指针 引用: if (!dptr->data[s_pos]) { dptr->data[s_pos] = kmalloc(quantum, GFP_KERNEL); if (!dptr->data[s_pos])…

java基础-public/private/protected的具体区别

在说明这四个关键字之前&#xff0c;我想就class之间的关系做一个简单的定义&#xff0c;对于继承自己的class&#xff0c;base class可以认为他们都是自己的子女&#xff0c;而对于和自己一个目录下的classes&#xff0c;认为都是自己的朋友。 1、public&#xff1a;publi…

【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

Linux设备驱动之mmap设备操作

1.mmap系统调用 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 功能&#xff1a;负责把文件内容映射到进程的虚拟地址空间&#xff0c;通过对这段内存的读取和修改来实现对文件的读取和修改&#xff0c;而不需要再调用read和write&#xff…

hadoop安装以及Java API操作hdfs

因为工作需求&#xff0c;需要我这边实现一个大文件上传到HDFS的功能&#xff0c;因为本机无法连接公司内网的集群&#xff0c;无奈只好自己动手搭建一个单节点的Hadoop来满足工作的需求。下面简单介绍下安装过程中遇到的坑我的机器是阿里云的最低配 安装文件&#xff1a;hadoo…

【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

给ubuntuGedit安装gedit-source-code-browser

插件链接下载 https://bugs.launchpad.net/ubuntu/source/gedit-source-code-browser-plugin/bug/1242126 下载这个安装完后还用不了&#xff0c;还要添加下面的补丁 diff -Naur old-plugins/sourcecodebrowser/ctags.py plugins/sourcecodebrowser/ctags.py --- old-plugin…

Hint: This means that multiple copies of the OpenMP runtime have been linked into the program.

解决OMP: Hint: This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is l…

Linux 系统版本信息

1、# uname &#xff0d;a &#xff08;Linux查看版本当前操作系统内核信息&#xff09; 2、# cat /proc/version &#xff08;Linux查看当前操作系统版本信息&#xff09; 3、# cat /etc/issue 或cat /etc/redhat-release&#xff08;Linux查看版本当前操作系统发行版信息&…