用Python写一个自动下载B站视频、弹幕、评论的软件

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

哈喽兄弟们,今天来实现一个Python采集视频、弹幕、评论与一体的小软件。
平常咱们都是直接代码运行,不过今天我们做成软件,这样的话,咱们不仅能自己用,还能分享给小伙伴,女朋友一起使用。

内容有点多,拿好小本本,做好笔记,发车了~
效果展示

我们先来看看效果,全部代码文末获取。
整体界面


我随便找个视频下载一下

弹幕和评论我都顺便下载了

有一说一,确实方便,就是下载视频太大的话,会卡一下。
不过我这里视频没有做去水印,所以下载下来还是有水印的。
接下来看看代码
下载视频

数据请求模块 ,第三方模块,需要在cmd里进行 pip install requests 安装
  1. import requests  
复制代码
 
正则表达式,内置模块 ,不需要安装
  1. import re  
复制代码
 
json模块 ,内置模块, 不需要安装
  1. import json   
复制代码
 
格式输出模块,内置模块 ,不需要安装
  1. from pprint import  pprint   
复制代码
 
导入进程
  1. import subprocess
复制代码
 
文件操作模块
  1. import os
复制代码
 
发送请求
  1. url = f'https://****.com/video/{bv_id}'
  2. headers = {
  3.     'referer': 'https://****.com/video/',
  4.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  5. }
复制代码
 
获取数据, 获取服务器返回响应数据 —> 文本数据 print(response.text)
  1. response = requests.get(url=url, headers=headers)
复制代码
 
解析数据,提取我们想要数据内容。
正则表达式 —> 对于字符串数据类型进行提取/解析
re模块findall() ----> 告诉程序从什么地方去找什么数据
re.findall() '“title”:“(.?)“,“pubdate”', response.text
从 response.text 里面 去找 “title”:”(.
?)”,“pubdate” 其中括号里内容就是我们要的。
  1. title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')
  2. html_data = re.findall('', response.text)[0]
  3. json_data = json.loads(html_data)
  4. audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
  5. video_url = json_data['data']['dash']['video'][0]['baseUrl']
  6. audio_content = requests.get(url=audio_url, headers=headers).content
  7. video_content = requests.get(url=video_url, headers=headers).content
  8. if not os.path.exists('video\\'):
  9.     os.mkdir('video\\')
  10. with open('video\\' + title + '.mp3', mode='wb') as audio:
  11.     audio.write(audio_content)
  12. with open('video\\' + title + '.mp4', mode='wb') as video:
  13.     video.write(video_content)
复制代码
 
获取音频内容以及视频画面内容
  1. cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
  2. subprocess.run(cmd, shell=True)
  3. os.remove(f'video\\{title}.mp4')
  4. os.remove(f'video\\{title}.mp3')
  5. return title
复制代码
 
下载弹幕

部分代码展示
[code]def get_response(html_url):    headers = {        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'    }    response = requests.get(url=html_url, headers=headers)    response.encoding = response.apparent_encoding    return responsedef get_Dm_url(bv_id):    link = f'https://www.*****/video/{bv_id}/'    html_data = get_response(link).text    Dm_url = re.findall('弹幕', html_data)[0]    title = re.findall('

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表