还是你厉害啊,用 Python 下载高清视频真速度

news2024/11/19 9:29:05

今天我们来进行 Python 爬虫实战,学以致用嘛,这也是咱们不断学习的动力!

我们要爬取的网站是YY直播,不知道有多少朋友知道,反正小编以前是不知道的,真的不知道~
图片

那么为什么我们选择这个网站呢,因为小编在网站找文章素材的时候,无意中发现了一个超级棒的 api,可以直接返回该网站上的主播视频

https://api-tinyvideo-web.yy.com/home/tinyvideosv2

图片

我们没有访问该地址,返回的结果都会变化,那么好了,我们只需要使用 Python 模拟网络请求,然后再解析对应的返回数据既可以了。

模拟请求

相信大家都不陌生,使用大名鼎鼎的 requests 库即可

url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
response = requests.get(url=url, headers=headers)
data = response.json()

这样,变量json_data里面就是我们上面在浏览器中看到的数据,接下来就是解析该数据

解析数据

在上面的数据中,我们可以看出,resurl当中保存着视频连接,那么我们只需要拿出该参数,再通过 requests 库请求即可

for d in data_list:
    video_title = str(d['yyNum']) + '.mp4'
    video_url = d['resurl']

    video_content = requests.get(url=video_url, headers=headers).content

变量video_content当中保存的就是视频信息,我们可以直接保存

保存视频

保存视频也比较简单,通过 open 函数完成

with open('video\\' + video_title, mode='wb') as f:
    f.write(video_content)
    print('保存完成:', video_title)

效果如下

图片保存到本地的视频如下

图片

循环下载

前面我们也说了,每次访问该 api,都会返回不同的数据,所以我们可以反复多次访问,然后下载更多的视频

url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
for _ in range(page+1):
    response = requests.get(url=url, headers=headers)
    data = response.json()

    data_list = data['data']['data']
    print(data_list)

技术提升

技术要学会分享、交流,不建议闭门造车。

好的文章离不开粉丝的分享、推荐,资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88191,备注:来自CSDN
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

完整代码

import requests


def fire(page):
    url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
    for _ in range(page+1):
        response = requests.get(url=url, headers=headers)
        data = response.json()

        data_list = data['data']['data']
        print(data_list)

        for d in data_list:
            video_title = str(d['yyNum']) + '.mp4'
            video_url = d['resurl']

            video_content = requests.get(url=video_url, headers=headers).content

            with open('video\\' + video_title, mode='wb') as f:
                f.write(video_content)
                print('保存完成:', video_title)


if __name__ == '__main__':
    fire(10)

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

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

相关文章

【5.1】Nacos注册中心--认识和安装Nacos/快速入门

【5.1】Nacos注册中心--认识和安装Nacos/快速入门1 认识Nacos2 安装Nacos3 服务注册到Nacos4 总结1 认识Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 2 安装Nacos 建议大家下载Typora之…

Grafana 系列文章(五):Grafana Explore 查询管理

👉️URL: https://grafana.com/docs/grafana/latest/explore/query-management/ 📝Description: Explore 中的查询管理 为了帮助调试查询,Explore 允许你调查查询请求和响应,以及查询统计数据,... Explore 中的查询管理…

CTFshow_萌新--密码篇

一、萌新认证进群大喊萌新码,即可获得。。。。。二、萌新密码1密文:53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D并给上了一下工具包。①密文首先Hex解码得到串:S1lkZjBhM2Vi…

项目管理工具——Maven

目录儿一、Maven简介二、下载与安装环境配置三、Maven基础概念3.1 仓库3.2 坐标在中央仓库网获取依赖坐标3.3 本地仓库配置3.4 远程仓库配置一、Maven简介 Maven是用java语言编写的。Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(PO…

商城项目的表设计

零、前言 1、优惠卷设计 电商项目中的优惠券系统这样设计,同事直呼 666 ! 2、SPU和SKU的定义及他们之间的关系 SPU全称Standard Product Unit,即标准化产品单元。 简单理解就是某一种产品。 SKU全称Stock Keeping Unit,即库存量…

PHP多进程(三) 理解多进程

本篇是一个过渡篇 ( 重在理解多进程 以及进程执行过程和进程执行后的数据 ) 废话不多说直接上代码 运行下面代码前 可以先想想有几个进程以及$count 是多少? <?php// 开始多进程 $count 10; for ($i0;$i<2;$i){epd(我是循环记数值.$i);$pid pcntl_fork(); // fork…

使用DBeaver 编辑链接达梦数据库

1、点击 “数据库”&#xff0c;选择“驱动管理器” 2、选择“新建” 3、 设置驱动 驱动名称&#xff1a;自定义 这里命名为“DM” 类名&#xff1a; dm.jdbc.driver.DmDriver URL模板&#xff1a;jdbc:dm://{host}:{port} 或jdbc:dm://{host}[:{port}]/[{database}] 默认端…

根据java反射-手写springIoC

我们都知道&#xff0c;Spring框架的IOC是基于Java反射机制实现的&#xff0c;下面我们先回顾一下java反射。 回顾Java反射 Java反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能…

ResNet简单介绍+Pytroch代码实现

文章目录一、背景介绍二、ResNet网络结构1.ResNet34结构示意图2.不同层数的ResNet采用的Block结构。3.不同层数的ResNet网络结构示意图4.实验结果三、Pytroch代码1.代码简单介绍2. 常见ResNet网络代码汇总四、参考文献一、背景介绍 问题&#xff1a; 当网络层数越来越深时&…

Vulkan 编程指南记录

1 创建Vulkan instance 利用CreateInfo结构体指定硬件驱动需要使用的程序信息&#xff0c;这些信息可能会被作为驱动程序的优化依据指定程序需要使用的全局扩展。比如和窗口系统交互的扩展&#xff08;通过glfw库的接口获取&#xff09;。可以通过vkEnumerateInstanceExtensio…

一篇文章全知全能SpringBoot Bean的生命周期

系列文章&#xff1a;https://gamwatcher.blog.csdn.net/article/details/124603278这篇文章也是计划了蛮久的了&#xff0c;一直没写&#xff0c;正所谓大道行思&#xff0c;取则行远&#xff0c;总结也是学习的一种方式。&#x1f648;记得看目录哦1、关于spring1.1 什么是sp…

Spring Security在前端后端分离项目中的使用

Spring Security 是 Spring 家族中的一个安全管理框架&#xff0c;可以和Spring Boot项目很方便的集成。Spring Security框架的两大核心功能&#xff1a;认证和授权 认证&#xff1a; 验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户。简单的理解就…

全网最详细的mybatis plus 条件构造器queryWrapper学习,比如and(),eq(),or(),like(),between(),orderByAsc()等方法以及分页操作

文章目录1. 引言2. 结构关系3. 环境配置3.1 引入jar包3.2 创建数据源3.2 创建User实体类3.4 创建UserMapper类3.5 创建UserService类4. 操作演示5. 注意事项1. 引言 mybatis大家都有使用过&#xff0c;既面向对象又灵活可配。不友好的地方是&#xff0c;会随着使用出现大量xml…

C++之缺省参数以及C++的输入输出

文章目录前言一、缺省参数的定义二、缺省参数的分类1.全缺省参数2.半缺省参数三、缺省参数的注意事项1. 半缺省参数必须从右往左依次来给出&#xff0c;不能间接给缺省值2. 缺省参数不能在函数声明和定义中同时出现3. 缺省值必须是常量或者全局变量4. C语言不支持四、C的输入&a…

考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

JavaEE初阶第三课:网络初识

欢迎来到javaee初阶的第三课&#xff0c;这节课我会带大家来初识网络 荔枝目录1.认识IP和端口1.1 IP1.2端口2.认识协议2.1协议分层&#xff08;TCP/IP协议&#xff09;2.2封装与分用2.3两台主机之间的网络通信流程&#xff08;非同一网段&#xff09;3.其他常见名词 解释3.1客户…

电脑老是蓝屏是什么原因?怎么修复蓝屏

电脑老是蓝屏是什么原因&#xff1f;其实电脑蓝屏的原因是有很多种的&#xff0c;每个地方出问题都会导致电脑蓝屏&#xff0c;所以我们要想知道蓝屏的原因&#xff0c;那么就需要一步步的去检测&#xff0c;去排除掉一些可能&#xff0c;才能得出正确的蓝屏原因的答案。 一.什…

MATLAB 数组计算

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

Java字典注解的简单实现(AOP)

需求来源 在开发过程中&#xff0c;必不可少会用到字典&#xff0c;例如&#xff0c;数据库字段性别字段可能是这样的&#xff1a;1&#xff1a;男&#xff1b;2&#xff1a;女&#xff0c;在数据存储的时候用1和2&#xff0c;但是在前端展示的时候需要使用男和女&#xff0c;…