小破站有许多“高质量”东西,怀揣着“学习”的目的,我用Python将它们通通采集下来

news2024/11/24 7:21:11

前言

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

事情是这样的,昨晚室友拉着我去他的电脑,说带我欣赏一点高雅的作品~

于是这一坐下,便是一晚上…

作为一个乐于分享的博主,本来我是决定直接分享的,

但是转念一想:有句俗话不是说授人以鱼不如授人以渔,

我还是直接出教程方便大家以后遇到了喜欢的,也能及时下载保存。

开发环境:

开发环境:

  • python 3.8 运行代码

  • pycharm 2022.3.2 辅助敲代码 专业版

  • ffmpeg

内置模块使用:

  • subprocess

  • re

第三方模块使用:

  • requests 发送请求

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

完整源码、教程 点击此处跳转文末名片获取 ,我都放在这里了。

代码实现步骤

  1. 发送请求, 对于视频详情页url地址发送请求

  2. 获取数据, 获取响应体的文本数据 response.text

  3. 解析数据, 通过正则表达式提取数据内容: 视频标题 cid session

  4. 发送请求, 对于视频内容数据包url发送请求

  5. 获取数据, 获取响应体的json字典数据 response.json()

  6. 解析数据, 通过字典键值对取值, 提取音频url 视频url

  7. 保存数据, 对于音频url 视频url发送请求 获取响应体二进制数据response.content

  8. 合成数据, 把音频内容以及视频画面内容合成为一个完整的mp4文件

代码实现

1、发送请求

导入模块

import requests
import re
import subprocess

伪装浏览

headers = {
    'referer': 'https://www.****.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
}

发送请求

def get_response(html_url):
    response = requests.get(url=html_url, headers=headers)
    return response

2、获取视频标题/cid/session

def get_video_info(html_url):
    response = get_response(html_url)
    cid = re.findall('"cid":(\d+),', response.text)[0]
    session = re.findall('"session":"(.*?)"', response.text)[0]
    title = re.findall('<h1 title="(.*?)" class="video-title">', response.text)[0].replace(' ', '')
    video_info = [cid, session, title]
    return video_info

3、获取音频url/视频url

def get_video_content(cid, session, bvid):
    index_url = 'https://api.****.com/x/player/playurl'
    data = {
        'cid': cid,
        'qn': '80',
        'type': '',
        'otype': 'json',
        'fourk': '1',
        'bvid': bvid,
        'fnver': '0',
        'fnval': '976',
        'session': session,
    }
    json_data = requests.get(url=index_url, params=data, headers=headers).json()
    audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
    video_url = json_data['data']['dash']['video'][0]['baseUrl']
    video_content = [audio_url, video_url]
    return video_content

4、保存数据

def save(name, audio_url, video_url):
    audio_content = get_response(audio_url).content
    video_content = get_response(video_url).content
    with open(name + '.mp3', mode='wb') as a:
        a.write(audio_content)
    with open(name + '.mp4', mode='wb') as v:
        v.write(video_content)
    print(name, '保存成功')

5、合成视频

def merge_data(video_name):
    print('视频合成开始:', video_name)
    cmd = f"ffmpeg -i {video_name}.mp4 -i {video_name}.mp3 -c:v copy -c:a aac -strict experimental {video_name}output.mp4"
    # print(cmd)
    subprocess.run(cmd, shell=True)
    print('视频合成结束:', video_name)

尾语 💝

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

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

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

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

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

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

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

相关文章

MySQL锁详解

五.锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源CPU、 RAM、I/O的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&#xff0c;锁冲…

「实在RPA·零售数字员工」助力零售运营化”零“为整

零售行业是指以面向消费者销售商品和服务的行业&#xff0c;它涵盖了各种类型的商店、百货公司、超市、购物中心、电商平台等&#xff0c;是全球最大的行业之一&#xff0c;在经济增长中有着举足轻重的作用。随着科技的发展&#xff0c;消费者需求的变化以及运营成本的增长&…

软件测试用例的设计以及分类

文章目录 测试用例设计1.测试用例2.设计测试用例的方法1) 等价类2) 边界值3) 判定表法4) 正交法5) 场景设计法6) 错误猜测法 3. 测试分类1) 按测试对象划分2) 按是否查看代码划分黑盒测试白盒测试灰盒测试为什么不直接使用灰盒测试常见的测试方法有哪些&#xff1f;哪些方法用的…

终于拿下腾讯25K的offer,面试官问我的面试题+回答,他都听懵了...

前言 自动化测试面试题总结&#xff1a; 1、你会封装自动化测试框架吗&#xff1f; 这个问得最多&#xff0c;很多公司直接写在招聘要求中。 自动化框架主要的核心框架就是分层PO模式&#xff1a;分别为&#xff1a;基础封装层BasePage&#xff0c;PO页面对象层&#xff0c;T…

【移动计算技术(Android)】期末复习

目录 选择题 选择题知识点汇总 Activity Intent Broadcast BroadcastReceiver 如何自定义Receiver 如何注册接收器 Service SharedPreferences 三种访问模式 如何创建 如何存储/修改 如何读取 内部存储 openFileOutput openFileInput SD卡 资源文件 SQLite…

【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】

目录 一 Canvas1.1 三种Render Space渲染空间 screen1.2 canvas scaler画布缩放器1.3sprite1.4 sprite packer1.5 unity目录1.6 RuleTile Tilemap1.7 sprite packer1.8 sorting layer 二 rect transform2.1 pivot 中轴 中心点2.2 anchor 锚点2.3 uGUI源代码 三 EventSystem3.1 …

【paddlecls】多机多卡-linux

1. 安装docker&#xff08;引擎&#xff09;&#xff1a; &#xff08;https://docs.docker.com/engine/install/ubuntu/&#xff09; Install Docker Engine on Ubuntu To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follo…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01&#xff1a;油站维度设计02&#xff1a;油站维度构建 01&#xff1a;油站维度设计 目标&#xff1a;掌握油站维度的需求与设计 路径 step1&#xff1a;需求step2&#xff1a;设计 实施 需求&#xff1a;构建油站维度表&#xff0c;得到油站id、油站名称、油站所属…

北美机器人市场迎来销售放缓,未来路在何方?

原创 | 文 BFT机器人 引言 Introduction 北美机器人销售在2022年创下了历史记录&#xff0c;但在2023年第一季度放缓。据推进自动化协会&#xff08;A3&#xff09;提供的数据显示&#xff0c;2023年第一季度&#xff0c;北美公司仅订购了9,168台机器人&#xff0c;较2022年同…

C++进阶 —— map

目录 一&#xff0c;map介绍 类pair 函数模板make_pair 二&#xff0c;map使用 一&#xff0c;map介绍 map是关联容器&#xff0c;按照特定的次序存储元素&#xff08;由键key和值value组合而成的&#xff09;&#xff1b;键key通常用于排序及唯一标识元素&#xff0c;而值…

不愧是华为出来的大佬,实在是太强了.....

前段时间公司缺人&#xff0c;也面了许多测试&#xff0c;一开始瞄准的就是中级水准&#xff0c;当然也没指望能来大牛&#xff0c;提供的薪资在15-20k这个范围&#xff0c;来面试的人有很多&#xff0c;但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

Pillow(PIL)入门教程(非常详细)以及python实现jpg,png、ico、bmp格式互转大全

概述 Pillow库的特点&#xff1a; python3安装pillow&#xff1a; ​Pillow是什么 Pillow创建Image对象&#xff1a; jpg,png&#xff1a; jpg与png格式互转代码&#xff1a; 概述 Pillow 库&#xff08;有时也称 PIL 库&#xff09; 是 Python 图像处理的基础库&#xf…

计划学习网络安全,需要学习哪些知识,应该怎么学习?

虽然现在的网络安全大都是指渗透测试&#xff0c;但是并不代表只有渗透测试这一个方向&#xff0c;除此之外还有二进制逆向这个方向。以下会对这两个方向分别对您进行详解。 渗透测试方向 1、学习编程语言 &#xff08;1&#xff09;网站如何搭建的&#xff1f;HTML、CSS、J…

SpingBoot+LayUI 实现酒店管理系统编写

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

晚上12点接到面试邀约电话,待业一个月的我却拒绝了....

前言 一位测试朋友最近一直在找工作&#xff0c;前两天刚拒绝了一个面试。那天晚上12点多&#xff0c;他接到一个HR的面试电话&#xff0c;让他第二天早上10点去公司面试。朋友和HR聊了两句&#xff0c;了解到这位HR经常加班&#xff0c;于是果断拒绝了这个面试。 我还为他可惜…

AHB-to-APB Bridge——06testbench、env、base_test、scb

框架&#xff1a; testbench&#xff1a; HCLK_PCLK_RATIO&#xff1a;随机定义hclk pclk比率&#xff1b;各个接口clk、rst连接&#xff1b;生成满足相应比率的pclk&#xff1b;与DUT的连接&#xff1b;将vif set到agt中去&#xff1b;agt在set到底层 关于rest_if&#xff…

如何保证三个线程按顺序执行?不会我教你

&#x1f468;‍&#x1f393;作者&#xff1a;bug菌 ✏️博客&#xff1a;CSDN、掘金、infoQ、51CTO等 &#x1f389;简介&#xff1a;CSDN|阿里云|华为云|51CTO等社区博客专家&#xff0c;历届博客之星Top30&#xff0c;掘金年度人气作者Top40&#xff0c;51CTO年度博主Top12…

仪表板展示 | DataEase看世界:数据呈现世界油价变化

背景介绍 最近几个月&#xff0c;全球能源市场一直处于动荡不安的状态&#xff0c;与石油相关的新闻也非常频繁。2023年2月10日&#xff0c;面对西方多轮限价举措&#xff0c;俄罗斯副总理亚历山大诺瓦克宣布&#xff0c;俄罗斯将在3月把每日原油产量下调50万桶。目前&#xf…

FOFA-攻防挑战

记录一下中途短暂的辉煌时刻 辉煌一刻谁都有,别拿一刻当永久 在昨天初尝战果之后&#xff0c;今天又习惯性的打开 https://vulfocus.cn/ 发现今天还有挑战赛&#xff0c;按捺不住躁动的心&#xff0c;又开始了学习。今天主要拿下的是这四个镜像&#xff0c;同时我也会对我了解…

前端SKU一站式解决方案 - Geek-SKU

因为业务需要且市场上的UI框架与插件市场内没有简易的用法并且不够全面萌生便了自己写一个SKU组件的想法&#xff0c;于是Geek-SKU便应运而生。 现在的SKU组件已支持vue、uniapp&#xff0c;支持带图SKU、主题色设置、自动选择低价SKU、自动展示价格区间等&#xff0c;让您更便…