0

    Python爬取B站视频,只需一个B站视频地址,即可任意下载

    2023.04.25 | admin | 210次围观

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    B站是国内知名的视频弹幕网站,有最及时的动漫新番,ACG氛围,最有创意的Up主。站点中的视频数据分成了视频画面和音频数据。

    今天带大家下载以及合并B站的视频。

    Python 数据分析入门案例讲解

    https://www.bilibili.com/video/BV1LX4y1u7VA

    复制

    环境介绍:解析网页

    目标网页分析

    B站的视频和音频是分开的,音频url和视频url都在 里面

    提取数据

    1、正则匹配提取数据

    2、正则提取出数据为一个列表,通过列表取值,取出

    3、字符串转json数据

    4、通过字典取值的方式,提取视频url以及音频url

    爬虫代码

    导入工具

    import requests
    import re  # 正则表达式
    import pprint
    import json
    import subprocess
    

    复制

    请求头

    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
    

    复制

    请求数据

    def send_request(url):
        response = requests.get(url=url, headers=headers)
        return response
    

    复制

    解析视频数据

    def get_video_data(html_data):
        """解析视频数据"""
        # 提取视频的标题
        title = re.findall('(.*?)', html_data)[0]
        # print(title)
        # 提取视频对应的json数据
        json_data = re.findall('', html_data)[0]
        # print(json_data)  # json_data 字符串
        json_data = json.loads(json_data)
        pprint.pprint(json_data)
        # 提取音频的url地址
        audio_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]
        print('解析到的音频地址:', audio_url)
        # 提取视频画面的url地址
        video_url = json_data['data']['dash']['video'][0]['backupUrl'][0]
        print('解析到的视频地址:', video_url)
        video_data = [title, audio_url, video_url]
        return video_data
    

    复制

    保存数据

    def save_data(file_name, audio_url, video_url):
        # 请求数据
        print('正在请求音频数据')
        audio_data = send_request(audio_url).content
        print('正在请求视频数据')
        video_data = send_request(video_url).content
        with open(file_name + '.mp3', mode='wb') as f:
            f.write(audio_data)
            print('正在保存音频数据')
        with open(file_name + '.mp4', mode='wb') as f:
            f.write(video_data)
            print('正在保存视频数据')
    

    复制

    数据的合并

    def merge_data(video_name):
        print('视频合成开始:', video_name)
        # ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
        COMMAND = f'ffmpeg -i {video_name}.mp4 -i {video_name}.mp3 -c:v copy -c:a aac -strict experimental output.mp4'
        subprocess.Popen(COMMAND, shell=True)
        print('视频合成结束:', video_name)
    

    复制

    效果图

    合并视频与音频

    这里使用到一个工具,FFmpeg是一套可以用来记录、转换数字音频、视频怎么直接解析网页视频原始下载地址,并能将其转化为流的开源计算机程序。

    下载之后解压即可,但是需要你设置环境变量

    1、我的电脑,鼠标右键点击属性

    2、选择系统高级设置

    3、选择环境变量

    4、添加环境变量怎么直接解析网页视频原始下载地址,复制文件路径,选择新建添加即可

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    标签: 环境变量
    发表评论