import requests,re
import json
from pprint import pprint
#定义一个函数用来获取响应的内容
def get_response(html_url):
'''
该函数主要用来获取网站响应的内容
:param html_url: 目标网址
:return: 目标网址返回的响应内容
'''
#加上请求头伪装
#加上防盗链,用于告诉浏览器去哪里找到该网址
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36',
'referer': 'https://www.bilibili.com'
}
response = requests.get(url=html_url,headers=header)
return response
# print(response)
#定义一个函数获取视频内的相关信息
def get_video_info(html_url):
'''
该函数用来获取视频的标题、音频、视频
:param html_url: 目标网址
:return: 标题、音频、视频
'''
response = requests.get(url=html_url)
#打印出视频的源码
# print(response.text)
#解析获取视频的中文名称
title = re.findall('<title data-vue-meta="true">(.*?)_哔哩哔哩_bilibili</title>',response.text)[0]
# print(title)
#解析视频中的音频数据
html_data = re.findall('<script>window.__playinfo__=(.*?)</script>',response.text)[0]
# print(html_data)
# 此时需要将返回的数据转换成字典的格式
json_data = json.loads(html_data)
# print(json_data)
#为了让格式更加好看和辨认,使用pprint
# pprint(json_data)
#开始拿音频和视频的数据
audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
# print(audio_url)
video_url = json_data['data']['dash']['video'][0]['baseUrl']
# print(video_url)
# 将响应的数据通过返回值进行返回
video_info = [title,audio_url,video_url]
return video_info
# 定义一个存储数据的函数
def save_info(title,audio_url,video_url):
'''
该函数是用来存储数据的
:param title: 标题
:param audio_url:音频网址
:param video_url: 视频网址
:return:
'''
audio_content = get_response(html_url=audio_url).content
video_content = get_response(html_url=video_url).content
#创建文件用来保存数据
with open(title+'.mp3','wb') as file:
file.write(audio_content)
with open(title+'.mp4','wb')as file:
file.write(video_content)
# 定义一个主函数将所有函数合并起来使用
def main(bv_id):
'''
将所有的函数并在一起使用
:param bv_id: 输入视频的bv_id
:return:
'''
url = f'https://www.bilibili.com/video/{bv_id}'
video_info = get_video_info(url)
save_info(video_info[0],video_info[1],video_info[2])
keyword =input('请输入您要爬取视频的bv_id:')
main(keyword)
#测试:BV1yu411D7u1
video
于 2022-05-05 19:41:30 首次发布
该博客介绍了一个Python脚本,用于从B站(哔哩哔哩)获取视频的BV号,并下载视频及其音频。脚本首先伪装请求头以防止防盗链,然后解析HTML获取视频标题和播放信息。接着,它提取音频和视频的URL,将数据保存为.mp3和.mp4文件。最后,用户可以通过输入BV号运行脚本来下载所需视频。
摘要由CSDN通过智能技术生成