前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
又到了学Python时刻~
在我们在网页端浏览小破站的视频的时候正常是没有下载按钮的
但是,电脑观看更爽啊~那么有没有办法下载呢?
当然是有的拉~怎么可能难倒屌炸天的程序员呢!!
今天来打造一个不是程序员也能实现通过BV号就能下载的软件,视频、弹幕、评论统统下载下来。
到时候还能分享给你的小伙伴来使用,简直就是装逼必备哇!
效果展示
我们先来看看效果
整体界面
我随便找个视频下载一下
弹幕和评论我都顺便下载了
有一说一,确实方便,就是下载视频太大的话,会卡一下。
不过我这里视频没有做去水印,所以下载下来还是有水印的。
代码展示
下载视频
模块导入
导入数据请求模块 ---> 第三方模块 需要在cmd里 进行pip install requests
import requests
# 导入正则 ---> 内置模块 不需要安装
import re
# 导入json模块 ---> 内置模块 不需要安装
import json
# 导入格式输出模块 ---> 内置模块 不需要安装
from pprint import pprint
# 导入进程
import subprocess
# 导入文件操作模块
import os
因为代码里有链接,不给过的,所以我把代表性的网址那里删掉了一部分,你们可以自行添加
或点击 蓝色字体 领取完整源码,我都放在这里了。
加伪装
def Video(bv_id):
url = f'https://www.网址.com/video/{
bv_id}'
# 把python代码伪装成浏览器 ---> 在开发者工具里面直接复制粘贴
headers = {
# 防盗链
'referer': 'https://www.网址.com/video/',
# 浏览器基本身份标识 表示浏览器
'user-agent': ''
}
发送请求
—> <Response [200]> 响应对象, 200状态码 表示请求成功
response = requests.get(url=url, headers=headers)
获取数据, 获取服务器返回响应数据 —> 文本数据 print(response.text)
解析数据, 提取我们想要数据内容
正则表达式 —> 对于字符串数据类型进行提取/解析
re模块findall()
----> 告诉程序从什么地方去找什么数据
re.findall() '"title":"(.*?)"
,"pubdate"'
, response.text
从 response.text
里面 去找 "title":"(.*?)","pubdate"
其中括号里内容就是我们要的
[‘昏君体验卡系列’] 列表数据类型
获取视频标题
title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')
获取视频数据信息 前端标签两个两个一起
html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]
转换数据类型 字符串数据转成json字典数据类型
json_data = json.loads(html_data)
print打印字典数据, 输出一行内容 print(json_data)
pprint 打印字典数据, 格式化输出 展开效果 pprint(json_data)
字典数据 B站数据 音频和视频分开的 根据冒号左边的内容, 提取冒号右边的内容 键值对取值
audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
video_url = json_data['data']['dash']['video'][0]['baseUrl']
403 Forbidden 没有访问权限…