首先我们利用开发者工具进行抓包分析
![](https://img.haomeiwen.com/i23706971/56bfcefe6105006f.png)
我们可以看到这个数据包一直在加载
![](https://img.haomeiwen.com/i23706971/36b058c644400443.png)
从链接中可以看到这是一个Flv文件,可以推测这个网站的直播形式大概就是HTTP+Flv的方式
我们对刚才获取到的链接进行验证,能否下载这个链接【简单使用浏览器请求链接下载】
![](https://img.haomeiwen.com/i23706971/54dac34731681041.png)
直播视频连接我们现在确定了,接下来要获取URL链接
![](https://img.haomeiwen.com/i23706971/4a37807be938fb92.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))
![](https://img.haomeiwen.com/i23706971/715f1a343cb8a023.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)
![](https://img.haomeiwen.com/i23706971/b06d0f5c7b50054b.png)
网友评论