Python 仅下载B站视频的音频

因为各音源网站都要会员而且资源都不全,但是B站上所有的歌或者郭德纲的相声是都可以分享的,所以想在B站上下载想要的歌或者其他的音频。

首先打开一个连接https://www.bilibili.com/video/BV1qt411g7pN?from=search&seid=5481535319705708598
打开浏览器按F12 ,切换到NetWork。会看到有资源不停的加载
像图片上这样数字开头的里面带有m4s?的就是视频的真实url
左键点开可以看到下图


直接复制Request URL** 前面到m4s?的一部分**
回到播放视频窗口右键 然后点击查看源代码
在源代码页面按ctrl + f 把复制的部分链接粘贴

只要能搜索到结果就说明视频和音频文件的原始链接就在页面源码里面
在页面源码里面顺着查找到结果的地方往前找可以看到<script>window.__playinfo__={"code":0,"message":"0","ttl":1,"data":{"from":"local","result":"suee","message":"","quality":64,"format":"flv720","timelength":174015,"accept_format":"flv720,flv480,mp4","accept_description":["高清 720P","清晰 480P","流畅 360P"],"accept_quality":[64,32,16],"video_codecid":7,"seek_param":"start","seek_type":"offset","dash":{"duration":175,"minBufferTime":1.5,"min_buffer_time":1.5,"video":[{"id":64,"baseUrl":"https://cn-sh-cc-bcache-10.bilivideo.com/upgcxcode/44/74/3547444/3547444_da3-1-30064.m4s?…等
很显然window.__playinfo__=后面的是一个json格式的数据只要用正则表达式提取出来再转化格式很容易就提取到url。
提取出来的数据用json格式化一些

音频的url是audio的值

# coding=utf-8
import requests
import re
import json
from lxml import etree# 获取有分p的所有视频的音频
def get_all_url(start_url):video_code = start_url.split('/')[4][:12] #提取B站视频的编号res = requests.get(url=start_url, headers=headers).textpattern_ = '<script>window.__INITIAL_STATE__=(.*?);\(function' # 提取分p视频列表信息的json数据n_ = re.findall(pattern_, res, re.S)xx_json = json.loads(n_[0])names = xx_json['videoData']['pages']# 提取分p视频的所有标题return names, video_code# 获取有分p的所有视频的音频
def all_mp3(data, code):for da in data:page_num = da['page']# 有多少个视频name = da['part']# 提取分p视频的所有标题url = 'https://www.bilibili.com/video/{}?p='.format(code) + str(page_num) #拼接所有的视频的urlresponse = requests.get(url, headers).textpattern = '<script>window\.__playinfo__=(.*?)</script>' #提取音频urllist_ = re.findall(pattern, response, re.S)list_json = json.loads(list_[0])volume_url = list_json['data']['dash']['audio'][0]['baseUrl']print(volume_url)PATH = 'E:/音乐/' + name + '.mp3' #保存路径audio = requests.get(url=volume_url, headers=headers).contentwith open(PATH, 'wb') as f:f.write(audio)print('下载完成')# 获取没有分p视频的音频文件
def get_mp3(url_):response = requests.get(url_, headers).texttree = etree.HTML(response)pattern = '<script>window\.__playinfo__=(.*?)</script>' #提取音频urllist_ = re.findall(pattern, response, re.S)list_json = json.loads(list_[0])title = tree.xpath('//*[@id="viewbox_report"]/h1/span/text()')[0] # 获取标题volume_url = list_json['data']['dash']['audio'][0]['baseUrl']print(volume_url)PATH = 'E:/音乐/' + title + '.mp3'#保存路径audio = requests.get(url=volume_url, headers=headers).contentwith open(PATH, 'wb') as f:f.write(audio)print('下载完成')# 获取视频分p的单个特定视频的链接
def list_mp3(url_):pg_num = url_.split('p=')[-1]response = requests.get(url_, headers).textpattern = '<script>window\.__playinfo__=(.*?)</script>' # 提取音频urllist_ = re.findall(pattern, response, re.S)pattern_ = '<script>window.__INITIAL_STATE__=(.*?);\(function' # 提取标题n_ = re.findall(pattern_, response, re.S)xx_json = json.loads(n_[0])names = xx_json['videoData']['pages']nn = 'sb'for name in names:if name['page'] == int(pg_num):nn = name['part']list_json = json.loads(list_[0])volume_url = list_json['data']['dash']['audio'][0]['baseUrl']print(volume_url)PATH = 'E:/音乐/' + nn + '.mp3'audio = requests.get(url=volume_url, headers=headers).contentwith open(PATH, 'wb') as f:f.write(audio)print('下载完成')# 获取单个的没有分p视频音频
if __name__ == '__main__':headers = {'Referer': 'https://www.bilibili.com/','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}get_mp3('https://www.bilibili.com/video/BV1XK4y147gU')
#获取有分p的所有视频音频if __name__ == '__main__':
headers = {'Referer': 'https://www.bilibili.com/','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
names_, code_ = get_all_url('https://www.bilibili.com/video/BV1Ps411U7xS?from=search&seid=14308701883993529089')
all_mp3(names_, code_)
#获取有分p其中一个视频音频
if __name__ == '__main__':headers = {'Referer': 'https://www.bilibili.com/','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}list_mp3('https://www.bilibili.com/video/BV1Ps411U7xS?p=7')

Python 仅下载B站视频的音频相关推荐

  1. 如何下载B站视频以及音频

    1.首先打开一个B站视频 2.点击F12打开控制台 3.找到开头为https://upos-sz-mirrorhw.bilivideo.com/upgcxcode的打印信息并复制整条信息(这是获取音频 ...

  2. python下载b站视频_爬虫可以当是一个批量下载工具!用Python批量下载B站视频

    说起B站,肯定人人都知道吧,B站的反扒机制并不是太严格,所以今天我准备给大家说说我能想到的几种方式,目前大概想到了三种方式: 1.模拟手机端请求,视频链接就添加在源码中.(最简单.但清晰度不好) 2. ...

  3. 宝藏下载神器,python一键下载B站视频

    B站无疑是一个宝藏地带,作为一个宝藏(老)男孩,请自行忽略(老)字,B站,一个学习的天堂,请一定珍惜,好好使用!作为吃灰党资深成员,一些的好的视频无疑需要进收藏夹吃灰,相信各位好机油肯定收藏了不少小姐 ...

  4. 解决使用python爬取b站视频并使用ffmepg把音频和视频合成失败

    首先我们需要下载ffmepg,并且配置环境变量 把下载下来的文件中的bin文件夹的路径添加到Path中 然后打开Anaconda Prompt,使用命令conda install ffmpeg安装ff ...

  5. python批量下载b站_PYTHON批量下载B站视频小脚本

    无聊废话 最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天...视频被下架了了...呃...(⊙o⊙)- 视频被下架 视频被下架了...我学了一半呀...哭... 在网上一顿找,依旧找不到. ...

  6. python下载B站视频(简单)

    python下载B站视频资料 众所周知,网页版的B站无法下载视频,然本人喜欢经常在B站学习,奈何没有网时,无法观看视频资源,手机下载后屏幕太小又不想看,遂写此程序以解决此问题 话不多说,进入正题 1. ...

  7. 如何通过一行代码下载B站视频?

    文章目录 如何通过一行代码下载B站视频? Step1:安装you-get Step2:下载B站视频 总结 如何通过一行代码下载B站视频? You-Get 是一个基于 Python 3 的下载工具.使用 ...

  8. 如何优雅地下载b站视频

    为什么想要下载到本地 当我在看b站视频学习的时候,有的地方听不懂需要,反复听,这就需要重新拖动滚动条到不懂的位置或者有些视频需要反复多次看, 在线看就有些不方便.如果下载到本地的话,使用potplay ...

  9. 教你怎么用you-get精确下载B站视频及弹幕

    教你怎么用you-get精确下载B站视频及弹幕 1.安装相关环境及插件 2.安装you-get 3.使用you-get进行下载视频 1.安装相关环境及插件 安装Pythone 3 ,去官网下载可执行的 ...

最新文章

  1. 使用STC8H1K28控制微型磁悬浮
  2. c++ 准确计时_C++精确计时
  3. 博图能打开s7200吗_域名掉备案了,还能打开吗?域名掉备案了怎么办?
  4. php mysql 导出到excel,php mysql数据导出到excel文件
  5. Hive学习之六 《Hive进阶— —hive jdbc》 详解
  6. [RK3399][Android7.1] 调试笔记 --- 查看开机上一次kernel log
  7. centos8 默认nginx路径_centos8自定义目录安装nginx(教程详解)
  8. linux命令行sip电话,基于嵌入式Linux和MiniGUI的SIP电话设计
  9. jms和activemq
  10. java滚动字幕实训报告_Java实习报告 (7000字).doc
  11. Unity URP/SRP可编程渲染管线
  12. android 控制手机音量大小,android 控制手机音量的大小 切换声音的模式
  13. excel概率密度函数公式_excel统计函数公式汇总
  14. 中国.NET:各地微软技术俱乐部汇总(更新中...)
  15. 《如何阅读一本书》完整版读书笔记
  16. Flink reduce详解
  17. 软著申请模板,帮助了不少小伙伴少走弯路
  18. ios duang 动画简记
  19. 俄亥俄州立大学计算机专业排名,俄亥俄州立大学CS专业排名2020年
  20. 网易云web安全工程师第一天

热门文章

  1. 多数CEO预计受疫情影响未来半年收入将下降;上海国际酒店投资加盟展将延期 | 美通企业日报...
  2. 2022年《北上广深杭》有哪些值得加入的软件测试大厂公司呢?花了三天三夜整理出各大互联网公司
  3. [原创歌词]网络爱人
  4. 手机科学计算机xy怎么用,iPhone计算器原来这么好用!神奇功能汇总
  5. ETAS代表博世成为Eclipse软件定义汽车工作组的战略成员
  6. rs232读取智能电表_智能电表助力智慧城市建设
  7. 微信小程序资料集(中)
  8. 分布式系统用户统一认证浅析(二)认证中心主动认证实现
  9. 基于element dialog二次封装弹窗组件
  10. 棋牌服务端机器人断线问题记录