import requests
import re
import json
from lxml import etree
def bilibili_download(url):
headers = {
"Referer": "https://www.bilibili.com/",
"User-Agent": '请求头'}
r = requests.get(headers=headers, url=url)
filename_data = etree.HTML(r.text)
print("开始下载....")
filename = filename_data.xpath("//h1/@title")[0].replace(" ", "")
print(filename)
html_data = re.findall(r"window.__playinfo__=(.*?)</script>", r.text)[0]
json_data = json.loads(html_data)
video_url = json_data["data"]["dash"]["video"][0]["baseUrl"]
audio_url = json_data["data"]["dash"]["audio"][0]["baseUrl"]
video_data = requests.get(url=video_url, headers=headers).content
audio_data = requests.get(url=audio_url, headers=headers).content
with open(fr"./video/{filename}.mp4", 'wb') as f:
f.write(video_data)
with open(fr"./video/{filename}.mp3", 'wb') as f:
f.write(audio_data)
print("完成下载....")
if __name__ == '__main__':
url = r"B站视频网址"
bilibili_download(url)
自己添加一个请求头就行