2023爬虫学习笔记

您所在的位置:网站首页 爬虫下载文件 2023爬虫学习笔记

2023爬虫学习笔记

2023-03-12 02:21| 来源: 网络整理| 查看: 265

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

web安全工具库 2023-03-09 11:04:47 博主文章分类:网络爬虫 ©著作权

文章标签 事件循环 回调函数 User 文章分类 网络安全

©著作权归作者所有:来自51CTO博客作者web安全工具库的原创作品,请联系作者获取转载授权,否则将追究法律责任

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

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

async def 访问网站(url): async with aiohttp.ClientSession() as 协程请求: async with await 协程请求.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(任务列表))

二、协程下载源码

文件夹 = '片段'if not 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'): if not i.startswith('#'): 切片=i 切片=urljoin(m3u8地址,切片) 切片列表.append(切片)print(切片列表)async def 访问网站(url): async with aiohttp.ClientSession() as 协程请求: async with await 协程请求.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(任务列表)) 收藏 评论 分享 举报

上一篇:汇编指令学习(LOOP)

下一篇:汇编指令学习(寻址方式)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3