方法一:相对复杂,但能下载高清视频

1、获取相关数据(我使用的是谷歌双核浏览器)

获取ts文件下载地址

打开仙逆第一集,按F12进入开发者模式,点击左边的搜索
在这里插入图片描述
输入m3u8,点击搜索,会找到左侧相关的内容,点击第一个,在右边的Headers中能看到请求地址,从https://到.ts整段可以直接拷贝到浏览器打开进行下载,其实整个视频是由多个ts文件组成的
在这里插入图片描述
在这里,我们需要拿到ts文件下载地址
如图所示:
在这里插入图片描述

获取下载视频的代理地址和请求体

依然是搜索m3u8,这里需要找到有proxyhttp的内容,将Request URL的地址(https://vd6.l.qq.com/proxyhttp)记录下来,赋给Python脚本里面的video_url变量
在这里插入图片描述
往下面拉,找到Request Payload,点击view source,
在这里插入图片描述
默认不显示全部,点击Show more直到显示所有内容
在这里插入图片描述
整个内容就是请求体,格式为json
在这里插入图片描述

2、Python代码

import requests
import re
import os
from tqdm import tqdm       # 显示进度条
import json

# 下载视频
def download_video(video_url, request_body, ts_url, video_path):
    if os.path.exists(video_path):
        raise ValueError(f"文件 {video_path} 已存在!")
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    response = requests.post(url=video_url, json=request_body, headers=headers)
    html_data = response.json()['vinfo']
    m3u8_url = re.findall('url(.*?),', html_data)[5].split('"')[2]      # 查找https
    m3u8_data = requests.get(url=m3u8_url).text

    # 删除以#号开头的行
    lines = m3u8_data.split('\n')
    cleaned_lines = [line for line in lines if not line.startswith('#')]
    m3u8_data = '\n'.join(cleaned_lines).split()

    # 开始下载视频
    print(f"begin download {video_path}...")
    for ts_name in tqdm(m3u8_data):
        download_url = ts_url + ts_name
        ts_content = requests.get(url=download_url).content
        with open(video_path, mode='ab') as f:
            f.write(ts_content)
    print(f"download {video_path} success")

if __name__ == '__main__':
    try:
        ts_url = input("输入ts文件下载地址:")
        request_body = json.loads(input("输入请求体:"))
        video_number = json.loads(input("剧集:"))
        video_url = "https://vd6.l.qq.com/proxyhttp"  # 下载视频的代理地址
        output_dir = r"E:\学习\视频剪辑\仙逆\原视频"
        video_name = f"仙逆第{video_number}集.mp4"
        video_path = os.path.join(output_dir, video_name)  # 下载视频保存路径
        download_video(video_url, request_body, ts_url, video_path)
    except Exception as e:
        print('ERROR:%s' % e)

3、效果

由于pycharm控制台输入网址回车会跳转到浏览器,因此在DOS下执行python脚本
在这里插入图片描述
简直太酷了
在这里插入图片描述

方法二:去B站下载,相对简单, 但清晰度不高

pip3 install you-get -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

you-get -i 视频地址,可以查看清晰度
在这里插入图片描述
you-get 视频网页地址即可下载

you-get  https://www.bilibili.com/video/BV1ai1TYhEHN/?spm_id_from=333.337.search-card.all.click

在这里插入图片描述

更多推荐