首页 > 编程语言 >python爬取m3u8视频文件

python爬取m3u8视频文件

时间:2022-11-29 17:55:59浏览次数:44  
标签:m3u8 python text ts 爬取 url 视频文件 data headers

import requests
import os
import aiohttp
import asyncio


first_m3u8_url = "https://cdn.zoubuting.com/20221129/waHIjBSS/index.m3u8"
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.56'
}
# 获取m3u8地址 -->  second_m3u8_url
first_m3u8_url_text = requests.get(url=first_m3u8_url,headers=headers).text
# first_m3u8_url_text = first_m3u8_url_text.strip()
# print(first_m3u8_url_text)

for line in first_m3u8_url_text.split('\n'):
    if line.startswith("/"):
        second_m3u8_url = "https://cdn.zoubuting.com" + line
# # print(second_m3u8_url)
#
# # 读取m3u8文件内容
second_url_text = requests.get(url=second_m3u8_url,headers=headers).text
# print(second_url_text)

# 将所有ts链接收集起来,放入列表中
ts_url_list = []
for ts_url in second_url_text.split('\n'):
    if ts_url.startswith("https://"):
        ts_url_list.append(ts_url)

# 创建下载目录
dirName = "movieDown"
if not os.path.exists(dirName):
    os.mkdir(dirName)

# 下载所有的ts文件
# for url in ts_url_list:
#     ts_name = url.split('/')[-1]
#     download_path = dirName + '/' + ts_name
#     data = requests.get(url=url,headers=headers).content
#     with open(download_path,'wb') as fp:
#         fp.write(data)
#         print(ts_name,"下载完成!")

# 协程改写
# 发起请求
async def get_url_data(url):
    async with aiohttp.ClientSession() as sess_requests:
        async with await sess_requests.get(url=url,headers=headers) as response:
            url_data = await response.read()
            return url_data,url

# 创建回调函数
def download(t):
    data,url = t.result()
    ts_name = url.split('/')[-1]
    download_path = dirName + '/' + ts_name
    data = requests.get(url=url,headers=headers).content
    with open(download_path,'wb') as fp:
        fp.write(data)
        print(ts_name,"下载完成!")
# 执行
tasks = []
for url in ts_url_list:
    # 创建任务
    c = get_url_data(url)
    task = asyncio.ensure_future(c)
    # 回调函数
    task.add_done_callback(download)
    tasks.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

标签:m3u8,python,text,ts,爬取,url,视频文件,data,headers
From: https://www.cnblogs.com/arsonist/p/16936104.html

相关文章

  • python性能调优之key-query
    近期接触到一个性能调优的问题,需要在mongodb中比对大约100G的csv文件的key在mongodb中是否存在baseline首先做一个什么优化都没有的情况下的基准测试:bat......
  • python-比较两个列表中的相同元素和不同元素
    由于两个列表(List)中可能会存在重复的元素,所以我们可以将列表转化成集合(set)进行去重,然后计算交集和差集。A=['1','2','3']B=['2','4','5']##计算交集print(str(......
  • PYTHON 控制语句
    1.1if语句1.1.1if结构if条件: 代码块如果条件成立(True),则执行代码块。score=100ifscore>=90:print("优秀")1.1.2if-else结构if条件:代码......
  • 力扣240(java&python)-搜索二维矩阵 II(中等)
    题目:编写一个高效的算法来搜索 m x n 矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例......
  • 【python】locust模块_性能测试
    简介Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程......
  • pythonfloat优雅的四舍五入
    开发中经常会有float四舍五入转int的需求,先看看浮点数直接转int的情形:无论如何float直接转int都不会四舍五入,而是直接抹去小数点。这个需求很简单,实现也很简单,看过网友的......
  • python一键去PDF水印,只需十行代码,超级简单...
    弟弟最近要考试,临时抱佛脚在网上找了一堆学习资料复习,这不刚就来找我了,说PDF上有水印,影响阅读效果,到时候考不好就怪资料不行,气的我差点当场想把他揍一顿!算了,弟弟长......
  • python-面向对象- 实例方法,类方法,静态方法, 类属性
    名称定义方法权限调用方法实例方法第一个参数必须是示例,一般命名为self可以访问实例的属性和方法,也可以访问类的实例和方法一般通过示例调用,类也可以调用类方法......
  • Python工具箱系列(十六)
    前面介绍了对称加密算法,本文将介绍密码学中另一类重要应用:消息摘要(Digest),什么是消息摘要?简单的定义是:对一份数据,进行一个单向的Hash函数,生成一个固定长度的Hash值,这个值......
  • 拓端tecdat|Python代写中用PyTorch机器学习分类预测银行客户流失模型
    Python中用PyTorch机器学习分类预测银行客户流失模型  分类问题属于机器学习问题的类别,其中给定一组功能,任务是预测离散值。分类问题的一些常见......