为防下架,我把虎*牙舞蹈小姐姐视频批量下载啦~

news2024/11/30 0:38:35

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

环境使用:

  • Python 3.10 解释器

  • Pycharm 编辑器

模块使用:

  • requests >>> 数据请求 第三方模块 pip install requests <工具>

    win + R 输入cmd 输入安装命令 pip install -i 镜像源网址 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

  • re <正则表达式模块>

实现案例思路: 批量采集数据

一. 数据来源分析
  1. 明确需求: 明确采集的网站以及数据内容

    • 网址: https://www.huya.com/video/play/933940354.html

    • 数据: 视频标题 / 视频内容 <主要数据>

  2. 抓包分析: 浏览器开发者工具去抓包

    • 打开开发者工具: F12 / 右键点击检查选择network (网络)

    • 刷新网页: 网页相关数据内容

    • 通过关键字去搜索找到对应的数据包位置

      搜索: M3U8 -> getMomentContent

      数据包地址: https://liveapi.huya.com/moment/getMomentContent

二. 代码实现步骤
  1. 发送请求 -> 模拟浏览器对于url地址发送请求

  2. 获取数据 -> 获取服务器返回响应数据

  3. 解析数据 -> 提取视频标题 / 链接

  4. 保存数据 -> 获取视频数据保存本地文件夹里面

<单页> 多个视频采集 --> 500页数据 * 20 = 10000条内容

分析请求链接变化规律

  • https://liveapi.huya.com/moment/getMomentContent?videoId=933940354&uid=&_=1700050245436

  • https://liveapi.huya.com/moment/getMomentContent?videoId=933613712&uid=&_=1700052358713

videoId -> 视频ID

uid -> 时间戳 表示请求网页时间节点 <可以固定不变 也可以通过time模块获取当前时间戳>

  • 只需要找到所有视频ID就可以了

    无论是什么ID 图片 章节ID 视频ID 音频ID --> 都能在目录页面获取到

单个下载

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块 <需要安装>
import requests
# 导入正则表达式模块 <内置模块>
import re

“”"

发送请求 -> 模拟浏览器对于url地址发送请求

  • 基本代码都可以直接在开发者工具中复制

    1. 模拟浏览器: 字典数据 <需要构建完整键值对>

      开发者工具: 标头(headers) -> 请求标头(request headers)

  • response = requests.get(url=url, headers=headers)

    调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头

    最后有用自定义变量名response接收返回数据

  • <Response [200]> 响应对象 表示请求成功了

    Response: 响应

    <> : 表示对象

    200: 状态码表示请求成功

“”"

# 模拟浏览器
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
url = f'https://liveapi.huya.com/moment/getMomentContent?videoId=904494849&uid=&_=1700050245436'
# 发送请求
response = requests.get(url=url, headers=headers)
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''

“”"

获取数据 -> 获取服务器返回响应数据

  • response.json() 获取响应json数据

    报错了: Expecting value: line 1 column 1 (char 0)

    原因: 返回数据不是完整json数据格式

    解决一:

    1. 查看返回数据具体情况

      xxx({数据})

    2. 在请求链接中删掉一个参数: callback <适用于大部分情况>

    解决二:

    直接获取响应文本数据, 通过正则表达式提取数据内容

  • response.text 获取响应文本数据

“”"

json_data = response.json() # json() 括号里面不需要加东西

“”"

解析数据 -> 提取视频标题 / 链接

字典数据类型:

内置函数: type() 查看数据类型

字典键值对取值, 提取数据内容: 根据冒号左边的内容[键], 提取冒号右边的内容[值]

列表取值: 索引位置 <整型>
“”"

# 提取标题
title = json_data['data']['moment']['title']
# 提取视频链接
video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']

“”"

保存数据 -> 获取视频数据保存本地文件夹里面

图片 视频 音频 --> 我们拿到都是链接, 实际需要内容

  • 需要对于链接发送请求, 获取二进制数据

    • ‘video\’ 表示你要保存的位置

    • title 视频文件名

    • ‘.mp4’ 文件格式

    • wb 保存方式 w写入 b二进制 <二进制保存>

“”"

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 获取视频内容
video_content = requests.get(url=video_url, headers=headers).content
with open('video\\' + title + '.mp4', mode='wb') as f:
    # 写入数据
    f.write(video_content)
print(title, video_url)

批量下载

# 导入数据请求模块 <需要安装>
import requests
# 导入正则表达式模块 <内置模块>
import re
# 模拟浏览器
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
for page in range(2, 501):
    print(f'===============正在采集第{page}页的数据内容===============')
    # 请求网址
    link = f'https://www.huya.com/video/g/all?set_id=51&order=hot&page={page}'
    # 发送请求
    response = requests.get(url=link, headers=headers)
    # 获取响应文本数据
    html_data = response.text
    video_id_list = re.findall('<li data-vid="(\d+)">', html_data)
    # for 循环遍历, 提取列表里面元素
    for video_id in video_id_list:
        # 请求网址
        url = f'https://liveapi.huya.com/moment/getMomentContent?videoId={video_id}&uid=&_=1700050245436'
        # 发送请求
        response = requests.get(url=url, headers=headers)
        json_data = response.json() # json() 括号里面不需要加东西
        # 提取标题
        title = json_data['data']['moment']['title']
        # 提取视频链接
        video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']
        # 获取视频内容
        video_content = requests.get(url=video_url, headers=headers).content
        with open('video\\' + title + '.mp4', mode='wb') as f:
            # 写入数据
            f.write(video_content)
        print(title, video_url)

效果展示


尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

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

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

相关文章

Android——gradle构建知识片-散装版

一、Gradle - Plugins插件库地址 Gradle - Plugins插件库地址https://plugins.gradle.org/ 二、将自己的代码Android Library发布到仓库Bintray、JCenter、JitPack 放弃JitPack&#xff0c;发布Android Library到Bintray、JCenter - 简书Bug&#xff1a;升级到gradle tools …

电压放大器的各项参数是什么意思

电压放大器是一种重要的电子设备&#xff0c;用于将输入信号的电压放大到更高的电压水平。在设计和使用电压放大器时&#xff0c;有一些关键参数需要考虑和了解。以下是西安电压放大器带来的各项参数及其意义的详细解释。 增益&#xff1a;增益是指输出电压与输入电压之间的比例…

Unity骚操作:2D横版探险游戏 Quad面片背景跟随正交摄像机移动而循环Shader图片为背景

来自:自研 10.2D横版探险游戏 Quad面片背景跟随正交摄像机移动而循环Shader图片为背景

如果面试时,问你职业规划怎么答?

对于面试官来说&#xff0c;他真的无心听你讲奋斗规划&#xff0c;问你职业规划&#xff0c;无法是想从你的言语中&#xff0c;分辨出你的稳定性&#xff0c;进取心。 1、稳定性 作为面试官&#xff0c;如果觉得你是人才&#xff0c;打算把你招进来&#xff0c;面试官最担心的…

TSINGSEE青犀智慧机房AI+视频智能监管方案,保障机房设备稳定运转

一、背景与需求分析 随着互联网的高速发展&#xff0c;机房数量及配套环境设备日益增多&#xff0c;其运行状况直接决定着企业组织的运营效率和服务质量。作为企业信息化的核心&#xff0c;机房的安全监测与管理&#xff0c;不仅关系到企业的稳定运转&#xff0c;同时也关系到…

中小企业怎么去挑选ERP系统?

中小企业该怎么去挑选ERP系统&#xff1f;本文将为大家总结了4点&#xff0c;如下&#xff1a; 先来说说中小企业选型ERP系统为什么这么难&#xff1f; 一是现在的厂商太卷了&#xff0c;选择太多&#xff0c;企业很难知道到底哪个是真正好用的。 简单来说&#xff0c;ERP其…

在Sprinng Boot中使用Redis充当缓存

关于我们使用EhCache可以适应很多的应用场景了&#xff0c;但是因为EhCache是进程内的缓存框架&#xff0c;在集群模式下&#xff0c;我们在我们的应用服务器或者云服务器之间的缓存都是独立的。故而在不同的服务器之间的进程会存在缓存不一致的情况&#xff0c;就算我们的EhCa…

Evil靶场

Evil 1.主机发现 使用命令探测存活主机&#xff0c;80.139是kali的地址&#xff0c;所以靶机地址就是80.134 fping -gaq 192.168.80.0/242.端口扫描 开放80&#xff0c;22端口 nmap -Pn -sV -p- -A 192.168.80.1343.信息收集 访问web界面 路径扫描 gobuster dir -u http…

只使用JS怎么给静态页面网站添加站内全局搜索功能?

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 背景 静态页面通常由HTML、CSS 和 JavaScript…

基于单片机的自动变速箱电控系统

**单片机设计介绍&#xff0c; 基于单片机的自动变速箱电控系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的自动变速箱电控系统是一种通过单片机来控制车辆自动变速箱的系统。它借助传感器和单片机的协同工作&am…

配电室中如何安装六氟化硫SF6气体泄漏报警装置?

六氟化硫气体泄漏报警装置安装位置产品的设计、检验、制造均遵循GB16808-2008《可燃气体报警控制器》和GB12358-2006《作业场所环境气体检测报警仪通用技术要求》严格设计。是经过高速CPU数据处理&#xff0c;通过LCD显示出探测器的浓度、状态并输出相应的控制信号。报警控制器…

口袋参谋:如何找竞争小,优势大的蓝海词?

​ 作为淘宝天猫的中小卖家&#xff0c;99.99%的人都知道流量对于店铺的重要性&#xff0c;如果没有流量的话&#xff0c;店铺是肯定没有销量的。 提高流量的方式有很多种&#xff0c;比如优化宝贝图片、标题、关键词等&#xff0c;由于在淘宝天猫上同一宝贝的竞争力太大了…

使用 Java 枚举和自定义数据类型

介绍 在 Java 编程领域&#xff0c;理解并有效利用枚举和自定义数据类型对于编写健壮、可维护且高效的代码至关重要。这篇文章旨在深入研究 Java 枚举和自定义数据类型的概念&#xff0c;提供见解和示例&#xff0c;以增强您的编码技能和知识。 理解 Java 中的枚举 枚举是枚…

Vue 2学习(路由、history 和 hash 模式、)-day014

一、路由简介 路由&#xff08;route&#xff09;就是一组 key-value 的对应关系多个路由&#xff0c;需要经过路由器&#xff08;router&#xff09;的管理 在 Vue 中也有路由&#xff0c;Vue 中的路由主要是通过 vue-rounter 这个插件库来实现&#xff0c;它的作用就是专门用…

POJ 2836 Rectangular Covering 状态压缩DP(铺砖问题)

一、题目大意 坐标系中有n个点&#xff0c;它们满足 -1000<x<1000,-1000<y<1000。 现在要在坐标系中放一些矩形&#xff0c;要使得每个点都被矩形覆盖&#xff08;被矩形的边或者顶点覆盖也可以&#xff09;&#xff0c;每个矩形都必须满足面积大于0&#xff0c;…

最新AI创作系统ChatGPT系统运营源码/支持最新GPT-4-Turbo模型/支持DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

推荐一个非常好用的uniapp的组件库【TMUI3.0】

文章目录 前言官网地址如何使用&#xff1f;注意事项后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果…

flutter 绘制右上角圆角三角形标签

绘制&#xff1a; import package:jade/utils/JadeColors.dart; import package:flutter/material.dart; import dart:math as math;class LabelTopRightYellow extends StatefulWidget {final String labelTitle; // 只能两个字的&#xff08;文字偏移量没有根据文字长度改变…

你不懂API接口是什么?怎么和程序员做朋友

说到开发平台就一定离不开接口&#xff0c;作为PM&#xff0c;我们不需要对接口了解的特别细。只需要知道接口是什么&#xff0c;有什么用&#xff0c;有哪些要素就行。 1. 接口是什么 (1) 硬件接口 生活中我们经常会接触接口&#xff0c;最常见的就是HDMI接口和USB接口&…