爬虫学习 逆向爬虫(六)

多任务异步协程

        协程:更高效的利用CPU

import timedef func():print("黎明")time.sleep(3)print("还是黎明")func()

等待时机长   sleep时CPU不再工作   IO操作(费时不费力)->阻塞

线程运行阻塞后 移出主线程  移动到下一个   

4个任务一个线程        线程池多线程切换消耗资源,而此不耗

 event_loop   轮巡

python实现协程

import asyncio  #借助event_loopasync def func():#协程  生成器print("233") if __name__ == "__main__":result = func()#print(result)asyncio.run(result)#loop.close()可能报错#同下
"""   event_loop = asyncio.get_event_loop()#event_loop执行协程对象,直到该对象内容执行完毕event_loop.run_until_complete(result)
"""

官方方案

import asyncio  #借助event_loop
import timeasync def func1():print("func1")  await asyncio.sleep(1)print("func1 over")async def func2():#协程  生成器print("func2") await asyncio.sleep(2)print("func2 over")async def func3():#协程  生成器print("func3") await asyncio.sleep(3)print("func3 over")#多函数任务if __name__ == '__main__':start = time.time()result1 = func1()result2 = func2()result3 = func3()#三个任务放一起tasks = [result1,result2,result3,]asyncio.run(asyncio.wait(tasks)) #无阻塞
print(time.time() - start())#await 挂起

 gather wait区别:

import asyncioasync def func1():print("func1")  await asyncio.sleep(1)print("func1 over")return "func1 返回值"async def func2():#协程  生成器print("func2") await asyncio.sleep(2)print("func2 over")return "func2 返回值"async def func3():#协程  生成器print("func3") await asyncio.sleep(3)print("func3 over")return "func2 返回值"async def main():f1 = func1()f2 = func2()f3 = func3()tasks = [asyncio.create_task(f1),asyncio.create_task(f2),asyncio.create_task(f3),]result =  asyncio.gather(*tasks) #位置参数   有顺序   #结束,运行done,pending = await asyncio.wait(tasks)#第二#print(done)#print(pending) 空"""for t in done:print(t.done())#done set集合 无序 返回结果没有顺序"""if __name__ == "__main__":asyncio.run(main())

视频下载

    
"""<video>无直接url,占网速,占内存切片 .ts名称散列    顺序ts文件正确顺序保存 ->M3U -> urf-8 -> M3U81请求M3U8文件2加载ts文件3正常播放服务器压力小,用户体验好"""

M3U8 文件简介

        m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

        当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:

#EXTM3U
#EXT-X-TARGETDURATION:10#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

"""<video> 无直接url,占网速,占内存.ts 是视频切片名称散列    顺序ts文件正确顺序保存 ->M3U -> urf-8 -> M3U81请求M3U8文件2加载ts文件3正常播放服务器压力小,用户体验好#EXTM3U#EXT-X-TARGETDURATION:13 //视频最大切片时长#EXT-X-KEY:METHOD=AES-128,URI="key.key" //切片文件加密方式&密钥地址对称加密
"""
"""步骤"""
#拿到视频页的页面源代码
#找到iframe src 为M3U8
#请求到src对应的页面源代码  M3U8地址
#第一层M3U8
#第二层
#ts解密
#对ts 合并

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring、SpringMVC、MyBatis的在线云音乐网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis的在线云…

一套后台管理系统的入门级的增删改查(vue3组合式api+elemment-plus)

一、页面示意&#xff1a; 图一 图二 二、组件结构 列表组件 &#xff1a;index.vue,对应图一添加组件&#xff1a;add.vue&#xff0c;对应图二&#xff0c;用抽屉效果编辑组件&#xff1a;edit.vue&#xff0c;和添加组件的效果一个。 三、代码 1、列表组件: index.vue …

我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)

文章目录 一、阈值处理1.1 OpenCV 提供了函数 cv2.threshold()和函数 cv2.adaptiveThreshold()&#xff0c;用于实现阈值处理1.1.1. cv2.threshold()&#xff1a;(1)在函数cv2.threshold()中&#xff0c;参数threshold_type用于指定阈值处理的方式。它有以下几种可选的阈值类型…

哈希桶——开放定址法

哈希表的迭代器&#xff1a; 迭代器模板介绍&#xff1a; template<class K, class T, class Ref, class Ptr, class KeyOfT, class Hash> K:关键词类型 T:存储的数据类型 Ref:T& &#xff08;operator*() 解引用函数的返回类型&#xff09; Ptr:T* (oper…

unknown error 1426

MySQL错误1426表示"Too many connections"&#xff0c;意思是MySQL服务器上的连接数达到了最大限制。 解决方式&#xff1a; 增加最大连接数&#xff1a;通过修改MySQL配置文件中的max_connections参数来增加最大连接数。将参数值适当增加&#xff0c;并重启MySQL服…

CDA level-2 备考经验分享 转数据分析师CDA证书备考 考试相关说明

抓住了23年的尾巴&#xff0c;正好给我考过了CDA level-2 &#xff0c;虽然今年只有这几个小收获&#xff0c;但是还是很开心了&#xff0c;毕竟知足常乐嘛。 由于工作原因&#xff0c;因此复习都是间断性的&#xff0c;勉勉强强给通过了&#xff0c;只得了个C。 考试注册报名与…

记录一次nacos无法注册服务报错的问题

nacos注册报错显示java.lang.IllegalArgumentException: protocol http host null 假如在pom文件中引入继承了父模块&#xff0c;而且父模块已经定义过了下面的cloud依赖时&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId…

台灯到底对眼睛好不好?推荐高品质的护眼台灯

其实只要我们挑选一盏专业的台灯&#xff0c;并且正确的使用&#xff0c;那么台灯对眼睛是有很大的好处的&#xff01;如今夜间工作、学习已然成为了再常见不过的事情&#xff0c;在夜间最大的痛点就是光照不足&#xff0c;如果单靠室内灯是远远不足的&#xff0c;而且光线的分…

【正点原子STM32连载】 第六十二章 USB虚拟串口(Slave)实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子APM32F407最小系统板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第六十…

基于Springboot的房产销售系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的房产销售系统(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Sp…

次世代建模纹理贴图怎么做?

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是次时代建模&#xff1f; "次世代建模"是一个术语&#xff0c;通常用来描述…

Linux--2.6内核调度和环境变量

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Linxu2.6内核进程调度队列1、一个CPU拥有一个runqueue2、优先级3、优先级活动队列4、过期…

VC++调试QT源码

环境&#xff1a;vs2017 qt 5.14.2 1&#xff1a;首先我们需要选择我们的源码路径 右键解决方案-》属性-》通用属性-》调试源文件-》在窗口内添加QT下载时的源码**.src文件夹**&#xff0c;这里最好把源码 D:\software\QT\path\5.14.2\Src 源文件里面的Src文件做一个备份出来…

Android UiAutoMatorViewer打不开

UIAutoMatorViewer是个很好用的工具&#xff0c;能解析出任意手机页面的UI树&#xff0c;非常方便。 工具位置&#xff1a;SDK\tools\bin\uiautomatorviewer.bat 一般双击就能打开。 但有时会打不开&#xff0c;双击后无反应&#xff0c;在cmd窗口中运行也是如此。 这种情况…

【Linux】第二十三站:缓冲区

文章目录 一、一些奇怪的现象二、用户级缓冲区三、用户级缓冲区刷新问题四、一些其他问题1.缓冲区刷新的时机2.为什么要有这个缓冲区3.这个缓冲区在哪里&#xff1f;4.这个FILE对象属于用户呢&#xff1f;还是操作系统呢&#xff1f;这个缓冲区&#xff0c;是不是用户级的缓冲区…

Python基础语法之学习占位符

Python基础语法之学习占位符 一、代码二、效果 一、代码 name "张三" sex "男" age 10 money 12.5# 通过占位符完成拼接 print("姓名&#xff1a;%s" % name) print("姓名&#xff1a;%s,性别&#xff1a;%s" % (name, sex))text…

链式队列的实现

目录 一、队列的结构定义 二、队列的初始化 三、队列的打印 四、入队 五、出队 六、取队头元素 七、取队尾元素 八、判断队列是否为空 九、求队列大小 十、销毁队列 十一、测试代码 一、队列的结构定义 //队列的结构定义 typedef int QDataType;typedef struct Queu…

您可以使用自己的服务器做哪些很酷的事情_Maizyun

您可以使用自己的服务器做哪些很酷的事情&#xff1f; 随着互联网的快速发展&#xff0c;拥有自己的服务器已经成为很多人的梦想。 您可以使用服务器做很多很酷的事情&#xff0c;这里有一些可能会让您兴奋的示例。 1. 建立个人网站或博客 有了自己的服务器&#xff0c;您就…

6.16二叉搜索树中的搜索(LC700-E)

算法&#xff1a; 二叉搜索树自带顺序&#xff0c;所以不用强调前、中、后序。 调试过程&#xff1a; 原因&#xff1a;初始化变量result时&#xff0c;没有给result赋值 正确代码&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int…

『C++成长记』构造函数和析构函数

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、类的六个个默认成员函数 &#x1f4d2;1.1认识默认成员函数 二、构造函数 …