2023爬虫学习笔记 |
您所在的位置:网站首页 › 爬虫下载文件 › 2023爬虫学习笔记 |
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 |