爬取B站单个视频
爬虫的基础是页面的分析,分析好页面才可以顺利爬取资源
"""
2. 想办法在程序里拿到页面源代码
3. 写正则. 提取到playinfo中的内容
4. 转化成字典. 提取下载url(video, audio)
5. 下载视频和音频
6. 合并起来.
"""
import requests # 提前安装requests模块 pip install requests
import re
import json
import os
# 想办法在程序里拿到页面源代码
url = "https://www.bilibili.com/video/BV15u41167Ch?spm_id_from=333.999.0.0&vd_source=47c7ffb06df7e09e7d93c63150e1ae60"
headers = {
# 对网站最基本的尊重
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=headers)
# print(resp.text) # 页面源代码
# 写正则. 提取到playinfo中的内容
play_info_re = re.compile(r"window.__playinfo__=(?P<play_info>.*?)</script>")
play_info = play_info_re.search(resp.text).group("play_info")
# print(play_info) # 有用的
dic = json.loads(play_info)
# print(dic)
video_url = dic['data']['dash']["video"][0]['baseUrl']
audio_url = dic['data']['dash']["audio"][0]['baseUrl']
# print(video_url)
# print(audio_url)
headers['Referer'] = url # 对上referer
# 下载视频和音频
# 发请求. 保存成文件
v_resp = requests.get(video_url, headers=headers)
with open("video.m4s", mode="wb") as f:
f.write(v_resp.content)
a_resp = requests.get(audio_url, headers=headers)
with open("audio.m4s", mode="wb") as f:
f.write(a_resp.content)
# 合并起来
# 借助专业工具来合并视频. 剪映, PR. FFMPEG
# FFMPEG, 下载之后. 解压缩. 把bin目录添加到环境变量.
# mac的同学特别简单. 百度一下.
# 执行一条命令
os.system("ffmpeg -i audio.m4s -i video.m4s -acodec copy -vcodec copy good.mp4")
非特殊说明,本文版权归原作者所有,转载请注明出处


评论列表
发表评论