美文网首页
Python爬取直播视频

Python爬取直播视频

作者: 乂尤先生 | 来源:发表于2021-02-02 17:05 被阅读0次

首先我们利用开发者工具进行抓包分析

抓包.png
我们可以看到这个数据包一直在加载
分析.png
从链接中可以看到这是一个Flv文件,可以推测这个网站的直播形式大概就是HTTP+Flv的方式
我们对刚才获取到的链接进行验证,能否下载这个链接【简单使用浏览器请求链接下载】
下载请求.png

直播视频连接我们现在确定了,接下来要获取URL链接

HTML代码.png

通过关键字段搜索,很顺利的获取到了Flv的链接,接下来就简单了,可以直接通过获取源码,匹配文本,提取Flv链接,然后直接请求下载请求到的链接

拼接地址,正则匹配Flv视频连接

import requests
import re
def get_url(rid):
    res = requests.get('https://www.tuho.tv/' + str(rid)).content.decode('utf-8')
    flv = re.search(r'videoPlayFlv":"(https[\s\S].*?flv)', res)
    if flv:
        status = re.search(r'isPlaying\s:\s(\w+),', res).group(1)
        if status == 'true':
            real_url = flv.group(1).replace('\\', '')
            return real_url
        else:
            raise Exception('未开播')
    else:
        raise Exception('直播间不存在')
if __name__ == '__main__':
    rid = input("输入直播房间号:\n")
    print(get_url(rid))
直播视频FLV.png

下载视频,附带进度显示

import requests
import os
import sys
def download(url):
    print("开始下载...")
    file_path = r'/test'
    #判断目录是否存在
    if not os.path.exists(file_path):
        os.makedirs(file_path)
    size = 0
    chunk_size = 1024
    response = requests.get(url,stream=True)
    with open(file_path+".flv", 'wb') as file:
        for data in response.iter_content(chunk_size=chunk_size):
            # print(data)
            file.write(data)
            size += len(data)
            file.flush()
            sys.stdout.write('\r[下载进度]:%.2fMB' % float(size / 1024 / 1024))
            sys.stdout.flush()
    file.close()
if __name__ == '__main__':
    url = "获取到的Flv链接地址"
    download(url)
下载进度.png

相关文章

网友评论

      本文标题:Python爬取直播视频

      本文链接:https://www.haomeiwen.com/subject/xxmytltx.html