爬取B站单个视频

磊落不羁 by:磊落不羁 分类:爬虫 时间:2年前 阅读:54 评论:0

爬虫的基础是页面的分析,分析好页面才可以顺利爬取资源

"""
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")


非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=42

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址

TOP