做车身拉花的网站高端网站建设域名注册

pingmian/2025/10/12 7:02:15/文章来源:
做车身拉花的网站,高端网站建设域名注册,平面设计需要用到的软件,淘宝做网站价格开坑个新系列#xff0c;主要面向新手#xff0c;老司机可以忽略。这个系列内的文章将会让你知道如何做到让你写的爬虫在运行的时候速度能像火箭一样快#xff01;很多初学爬虫的朋友对于这方面的知识似乎是空白的#xff0c;甚至还有一些在爬虫岗位上工作了一两年的人也搞…开坑个新系列主要面向新手老司机可以忽略。 这个系列内的文章将会让你知道如何做到让你写的爬虫在运行的时候速度能像火箭一样快 很多初学爬虫的朋友对于这方面的知识似乎是空白的甚至还有一些在爬虫岗位上工作了一两年的人也搞不清楚在不使用爬虫框架的情况下如何写出一个速度足够快的爬虫而网上的文章大多是基于多进程/Gevent来写的代码看起来就极其复杂甚至有些人抄来抄去连多进程和多线程没搞清楚如果是一个想学习这方面知识的人看到了这样的文章多半会一脸懵逼。 综上所述为了让关注我公众号的新手朋友们能快速掌握这些技巧这个系列就这样诞生了~话不多说我们正式开始。在提升爬虫的速度这方面最基础、最有效、最直接的操作是什么呢没错就是并发请求如果你的爬虫整个逻辑是顺序执行的请求的时候永远不会并发那么你就会遇到像他这样的情况《小白写了个壁纸的爬虫能跑起来但是感觉很慢不知道怎么回事请大佬指点》。上面这是我昨天刷V2的时候看到的一个帖子楼主的代码内容简单概括一下就完全是顺序执行的每下载一个图片都需要等待当前这个图片下载完了才能继续下载下一个这样子做当然会非常慢了这篇文章就拿他的代码作为样例在原来的基础上进行一些调整从而让他写的这个爬虫的运行速度能从龟爬变成像坐火箭一样快首先我们需要知道什么是并发这里的并发指的是“并行发送请求”意思就是一次性发出多个请求从而达到节省时间的效果那么并发和不并发的区别在哪呢简单来说就是这样子的把爬虫比喻成工人在不并发的情况下一个工人一次只能做一件事情所以必须要下载完一个图片才能继续下载下一个。而在并发的情况下就有很多个工人一起在干活每个工人都被分配了一件事情做所以可以同时下载多个图片速度自然就快了很多。当然上面说的这个例子只是从一个宏观的角度上来看并发实际在做的时候要让你的爬虫能并发请求的方式是分为多线程、多进程、协程三种的并不是每一种方式在运行时的效果都像上面说的这样这里先不做深入探讨因为这不是本文的重点。我们现在只需要知道只要能让爬虫并发请求就能同时下载多个图片让速度快得飞起这样就够了。那么我们要用上面说的三种方式里的哪一种来实现并发请求呢这还用问吗当然是选择代码最简单、改动最小并且最容易看懂的协程啊在Python3.4之后Python就引入了一个叫做asyncio的库原生支持了异步IO而在3.5之后Python又支持了async和await这两个语法使得写异步代码可以像写同步代码一样简单易读。刚刚又提到了两个词同步和异步这两个词的含义其实就跟上面的并发差不多同步代码就是顺序执行的而异步则不是这里同样不做深入探讨先知道有这么个东西就行了。看到这里肯定会有人开始有疑问了虽然前面说我们要用协程来实现并发请求但是后面说的却是什么Python支持原生异步那么这个异步跟协程的关系又是什么呢其实很简单协程可以让你写异步代码的时候能像写同步代码一样简单在Python3中写协程代码的核心语法就是async和await这两个举个简单的例子吧def func():print(1)time.sleep(10)print(2)这是一段普通的函数它属于同步代码里面的time.sleep是普通函数也属于同步代码。async def func(): # 调用协程函数的那个函数也需要是一个协程函数print(1)await asyncio.sleep(10) # 调用协程函数的时候要在前面加awaitprint(2)而这是一个协程函数它属于异步代码里面的asyncio.sleep是协程函数也属于异步代码。它们的区别显而易见用协程来写异步代码除了需要换成异步的库以外就只是多了个async、await而已是不是非常简单那么我们在了解了怎么写协程代码之后就能开始优化那段慢成龟速的代码了吗答案是否定的那段代码中使用了requests库进行网络请求而requests是一个同步库不能在异步环境下使用同样文件操作用的open和file.write也是同步的也不能在异步环境下使用。所以在开始之前我们还需要了解两个库分别是aiohttp和aiofilesaiohttp是一个异步网络请求库而aiofiles是一个异步文件操作库。aiofiles是基于线程池实现的并不是真正的原生异步但问题不大不影响使用切记异步代码不能与同步代码混用否则如果同步代码耗时过长异步代码就会被阻塞失去异步的效果。而网络请求和文件操作是整个流程中最耗时的部分所以我们必须使用异步的库来进行操作否则就白搞了好了先来看看aiohttp的用法吧官方文档上的示例大致如下async with aiohttp.ClientSession() as session:async with session.get(url) as resp:result await resp.text()是不是觉得很麻烦不像requests库那么方便还觉得两层async with很丑有没有办法让它像requests库一样方便呢答案是有的有一个叫作aiohttp-requests的库它能让上面的这段代码变成这样resp await requests.get(url) result await resp.text()清爽多了对吧我们等下就用它了记得装这个库的前提是要先装aiohttp哦然后我们来看看aiofiles的用法官方文档上的示例如下async with aiofiles.open(filename, moder) as f:contents await f.read() print(contents)嗯这个用起来就和用同步代码操作文件差不多了没啥可挑剔的直接用就完事了。提示aiohttp-requests默认是创建并使用了session的对于一些需要不保留Cookie进行请求的场景需要自己实例化一个Requests类并指定cookie_jar为aiohttp.DummyCookieJar。了解完了要用的库之后我们就可以开始对贴子中的代码进行魔改了如果你用的不是Python3.5以上版本的话需要先准备一下环境。除了版本号大于等于3.5的Python以外你还需要安装以下几个库aiohttp异步网络请求库aiohttp-requests让aiohttp用起来更方便的库aiofiles异步文件操作库pillow其实就是PIL库代码中的图片操作有用到执行一下pip install aiohttp aiohttp-requests aiofiles pillow一次性装完如果存在多个不同版本的Python环境记得区分好。然后我们打开编辑器开始改代码首先调整一下导包的部分将里面的requests替换成aiohttp-requests像这样然后搜索一下requests看看哪些地方用到了它。接着把所有搜到的部分都给改成异步请求的。同时不要忘了将所有调用过requests.get的函数都变成协程函数。然后我们把文件操作的部分也换成异步的使用aiofiles.open代替open。最主要的部分都换好了接着我们将原先在if __name__ __main__:下的代码移到一个新写的协程函数run中并且将调用前面协程函数的部分都加上await。再导入一下asyncio库然后在if __name__ __main__:下写出这样的代码上面这个是Python3.7之后才能用的写法低于Python3.7要这样写现在我们就可以运行一下看看修改后的代码能不能跑通了。这里报了个错从错误堆栈中可以看出问题是出在response await requests.get(urlurl, headersheaders)这里的原因是self.session._request方法没有key为url的参数。这个问题很好解决只需要将urlurl变成url就好了本来也就没必要这么指定参数写。将代码中所有用到requests.get并且存在urlurl这种写法的都做一下调整调整完之后再运行一次就正常了效果和原先的代码相同。注意仅仅是这样并不会让速度发生很大的变化我们最后还需要将这一堆代码中最耗时且是顺序执行、没有并发请求的部分单独放到一个协程函数中并且用asyncio.gather来并发调用由于原本的逻辑较为混乱这里除了并发请求以外还进行了一些其他的微调主要是计数和文件路径的部分无关紧要。运行一下看看效果刚运行起来一瞬间就刷了一排的下载完成跟修改之前比起来简直是天差地别。这就是并发请求的威力我们仅仅是对他原本的代码进行了一些微调把最耗时的下载图片部分简单粗暴地使用asyncio.gather并发执行了一下速度就从龟爬变成了像坐火箭一样快其实代码中还有很多可以优化的点这里就不一一拿出来讲了最后给大家提个醒虽然并发请求非常牛逼可以让你的爬虫变得飞快但它也不是不存在任何问题的如果你的并发请求数量过大又称并发数过高你的爬虫就相当于是在对他人的服务器进行Dos攻击拒绝服务攻击了举个例子你在爬一个小网站的时候为了自己爬的速度更快对并发请求的数量毫无限制使得你的爬虫一次性发出了几百、上千个请求但一般的小网站根本扛不住这么高的并发几乎会在一瞬间就被你的爬虫给打爆掉试想一下如果你是站长看到这样的情形你会怎么想如果你不能理解这个例子所产生的效果是什么样的可以自己搭建一个Web服务只放一个简单的页面然后开个几百并发去请求这个页面这样你就能切身地体会到别人是什么感受了。所以记住一定要合理控制并发请求的数量不要对对方网站造成过大的压力你给别人留活路别人才会给你留活路最后再留个小作业吧如何对这个修改后的代码增加一道并发数的限制在留言区给出你的答案。提示可通过搜索引擎查找【aiohttp并发连接数限制】和【python 列表切割】相关的内容这个时代各种东西变化太快而网络上的垃圾信息又很多你需要有一个良好的知识获取渠道很多时候早就是一种优势还不赶紧关注我的公众号并置顶/星标一波~发送消息“爬虫速度提升之并发请求”到我的公众号【小周码字】即可获得本文代码下载地址~

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

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

相关文章

济南网站优化公司艾乎网wordpress 利用页面搞

首先在simlink中找到HDL CODER 打开红色Blank DUT,进入里面绿色的子系统开始设计系统 例如设计一个正弦信号发生器,里面用到了add、memory、relation operator、switch、constant、cos模块,cos模块选择了cordic算法,使用cordic那…

免费网站推荐货源wordpress 图片 alt

目录 1. Spring 概述 1.1 Spring是什么 1.2 Spring的作用 1.3 Spring IoC是什么 2. Spring 快速入门 3. Spring Bean 3.1 的实例化方式 空参构造器 3.2 的属性注入 全参构造器注入 setter方法注入 策略模式 3.3 注解管理 3.4 注解方式的属性注入 1. Spring 概述 …

jsp网站开发公司wordpress自动超链接

基础知识 NLP-分词器:SentencePiece【参考Chinese-LLaMA-Alpaca在通用中文语料上训练的20K中文词表并与原版LLaMA模型的32K词表进行合并的代码】_sentencepiece 中文训练-CSDN博客 【OpenLLM 008】大模型基础组件之分词器-万字长文全面解读LLM中的分词算法与分词器…

站酷海洛带网站的图片素材

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

乐清住房和城乡建设部网站官网怎么优化网站关键词的方法

Spark 是一个开源的分布式计算框架,旨在处理大规模数据集的快速计算和分析。下面是 Spark 的主要组件及其任务分工的详细介绍: Driver(驱动器):【任务调度】 负责整个 Spark 应用程序的执行和协调。解析用户程序&#…

桂林北站附近有什么好玩的网站设计推广

(第一阶段)问题 5a(3 分) 实现该函数,该函数模拟了完整的 Hog 游戏。球员 交替轮流掷骰子,直到其中一名玩家达到分数。playgoal 您现在可以忽略 Feral Hogs 规则和论点; 您将在问题 5b 中实现它。feral_h…

平面设计类网站有哪些做网站建设公司crm在线的培训服务

文章目录 炸铁路题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题意解析思路CODE 炸铁路 题目描述 A 国派出将军 uim,对 B 国进行战略性措施,以解救涂炭的生灵。 B 国有 n n n 个城市,这些城市以铁路相连。任意两个城市都可以通…

大连网站建设外包公司商丘网络第一媒体

在流媒体项目中字幕显示是不可或缺的一环,一般会有字幕流在视频播放过程中进行显示;不过还有很多情况是从头到尾只在视频的某个区域显示某些文字,例如某个电视台的log;这种也称为字幕,如果想要将这些字符串显示到视频&…

西乡县门户网站宁波市网站排名优化

先贴上关于使用这个日志组件的一些使用方法,等有时间了在吧官方的文档翻译一下吧,现在真是没时间。 Serilog在使用上主要分为两大块: 第一块是主库,包括Serilog以及Serilog.AspNetCore,如果导入后一个的话会自动导入前…

国内虚拟助手网站国外打开网站会不会乱码

参考资料:https://blog.51cto.com/u_11984354/4907646 NO.21-SAP S4 HANA Cloud API接口测试(1)-CSDN博客

dede网站名称不能保存网站开发与建设方向

前面学习了一个简单的例子,这是多年来学习应用程序开发的经典路径,在这里也是这种待遇,通过这样的学习明白了一个简单应用是怎么样构成的,知道它是怎么运行输出的。在这个基础之上,你还是不会开发应用程序的,因为你还没有学习鸿蒙应用的开发语言基础,所以在这里要学习一…

抚顺市 网站建设中国移动积分兑换商城官方网站

资料仅供学习分享用,废话不多说,解压密码为:1024文件是切割压缩的,多个part的压缩包,大家需要先下载到本地在解压,直接百度云解压会提示压缩包损坏。------------------------------学习资料java&#xff1…

免费一键自助建站官网软件开发5个过程

什么是HTTP压缩cssHTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,好比gzip来压缩HTML,Javascript, CSS文件。 能大大减小网络传输的数据量,提升了用户显示网页的速度。固然,同时会增长一点点服…

建网站申请济南营销型网站制作

-----2017.11.16 最后一次更新----- 小夕也真的没有想到,在万般绝望之时竟然得到了这么多人的帮助。在本文发出后,多位阿里人员积极联系我了解了情况,很感激一位阿里的专家帮我将此事递交给相关部门,让专业的客服直接受理和重审此…

防制网站怎么做wordpress主页视频

作者: 陈斌(redguardtoo) 更新时间: 2012-02-10 五 原创时间: 2012-01-31 周二 15:08 很容易.一年多前我还在Vi阵营,偶尔使用Emacs还总是忘记退出(C-x C-c)的快捷键,但是一年后我跨入高手行列. 现在网上很多中文文章都是和你强调Emacs有多牛,以激发你的兴趣.最有名的大概是王垠…

中山企业网站建设定制现在都用什么做网站

NaN 是什么 在C中,NaN(Not a Number)是一种特殊的浮点数值,用于表示无法表示的数值或未定义的操作,例如0除以0。如果你的double类型变量显示为NaN,那么可能是在计算过程中出现了这种未定义的操作。 如果你…

如何将别人的网站作为自己的网站报错401

源码简介 超级外链工具,是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链,大大提高外链发布工作效率,是广大草根站长们必备的站长工具。 搭建环境 PHP 5.6 安装教程 上传源码压缩包到网站目录并解压即可 首…

广州网站优化关键词排名今天广西新闻回放

Atitit。数据库 安全性 重要敏感数据加密存储解决方案 1.1. 加密存储的重要性1 1.2. 使用的加密算法aes1 1.3. 数据加密以后会有一些问题。1 1.3.1. 一个是统计,比如统计资金总额。。就无法直接使用sql的sum等数据库内部聚合函数来处理了。。1 1.3.2. 还有一个就是按…

网站开发项目付款方式如何创建网站快捷方式到桌面

什么是卫语句在方法的开头,我们经常会添加一些检查代码,当检查条件为true时立刻从方法中返回。这样的单独检查代码被称为“卫语句”。例如,我们在添加用户时会检查用户名不能为空,年龄必须大于0:public void AddUser(s…

高端网站制作开发网页应用开发

SDN火热了好一阵子,无论运营商、政府企业、投资机构,一段时间,不知道SDN、不能甩几个SDN相关的名词术语,似乎都落后于时代了。今天,就来看看关于SDN的精华问答吧。1Q:SDN将会提供端到端的IT基础设施可见性&…