2023爬虫学习笔记 -- 通过协程下载m3u8视频

Posted web安全工具库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023爬虫学习笔记 -- 通过协程下载m3u8视频相关的知识,希望对你有一定的参考价值。

一、下载视频的时候是耗时操作,所以将下载视频的代码写到回调函数里面

1、创建协程访问网站,返回读取的内容及单条视频的下载地址

asyncdef 访问网站(url):asyncwith aiohttp.ClientSession() as 协程请求:
        asyncwithawait 协程请求.get(url=url,headers=头) as 响应内容:
            视频内容=await 响应内容.read()
            return [视频内容,url]
    print(url)

2、将内容保存下载

def 下载视频(视频):
    返回列表内容=视频.result()
    视频具体内容=返回列表内容[0]
    视频地址=返回列表内容[1]
    视频名字 = 视频地址.split('/')[-1]
    保存路径 = 文件夹 + '/' + 视频名字
    with open(保存路径, 'wb') as fp:
        fp.write(视频具体内容)
    print(视频名字)

3、通过事件挂接协程任务

事件循环=asyncio.new_event_loop()
asyncio.set_event_loop(事件循环)
任务列表=[]
for 网址 in 切片列表:
    网站对象=访问网站(网址)
    任务=asyncio.ensure_future(网站对象,loop=事件循环)
    任务.add_done_callback(下载视频)
    任务列表.append(任务)
事件循环.run_until_complete(asyncio.wait(任务列表))

二、协程下载源码

文件夹 = '片段'ifnot os.path.exists(文件夹):
    os.mkdir(文件夹)
m3u8地址="https://woXXXXX.com:65/20220425/vsfbnBKc/index.m3u8"
头=
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/86.0.4240.198 Safari/537.36"

m3u8内容=requests.get(url=m3u8地址,headers=头).text
#print(m3u8内容)
切片列表=[]
for i in m3u8内容.split('\\n'):
    ifnot i.startswith('#'):
        切片=i
        切片=urljoin(m3u8地址,切片)
        切片列表.append(切片)
print(切片列表)
asyncdef 访问网站(url):asyncwith aiohttp.ClientSession() as 协程请求:
        asyncwithawait 协程请求.get(url=url,headers=头) as 响应内容:
            视频内容=await 响应内容.read()
            return [视频内容,url]
    print(url)
def 下载视频(视频):
    返回列表内容=视频.result()
    视频具体内容=返回列表内容[0]
    视频地址=返回列表内容[1]
    视频名字 = 视频地址.split('/')[-1]
    保存路径 = 文件夹 + '/' + 视频名字
    with open(保存路径, 'wb') as fp:
        fp.write(视频具体内容)
    print(视频名字)
事件循环=asyncio.new_event_loop()
asyncio.set_event_loop(事件循环)
任务列表=[]
for 网址 in 切片列表:
    网站对象=访问网站(网址)
    任务=asyncio.ensure_future(网站对象,loop=事件循环)
    任务.add_done_callback(下载视频)
    任务列表.append(任务)
事件循环.run_until_complete(asyncio.wait(任务列表))

以上是关于2023爬虫学习笔记 -- 通过协程下载m3u8视频的主要内容,如果未能解决你的问题,请参考以下文章

2023爬虫学习笔记 -- 协程操作

python爬虫学习笔记-M3U8流视频数据爬虫

2023爬虫学习笔记 -- MongoDB数据库

2023爬虫学习笔记 -- 解决爬虫Cookies问题

2023爬虫学习笔记 -- selenium库的实际应用

2023爬虫学习笔记 -- selenium库的实际应用