本文主要是介绍Python中利用aiohttp制作异步爬虫及简单应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘要: 简介 asyncio可以实现单线程并发IO操作,是Python中常用的异步处理模块。关于asyncio模块的介绍,笔者会在后续的文章中加以介绍,本文将会讲述一个基于asyncio实现的HTTP框架——aiohttp,它可以帮助我们异步地实现HTTP请求,从而使得我们的程序效率大大提高。
简介
asyncio可以实现单线程并发IO操作,是Python中常用的异步处理模块。关于asyncio模块的介绍,笔者会在后续的文章中加以介绍,本文将会讲述一个基于asyncio实现的HTTP框架——aiohttp,它可以帮助我们异步地实现HTTP请求,从而使得我们的程序效率大大提高。
本文将会介绍aiohttp在爬虫中的一个简单应用。
在原来的项目中,我们是利用Python的爬虫框架scrapy来爬取当当网图书畅销榜的图书信息的。在本文中,笔者将会以两种方式来制作爬虫,比较同步爬虫与异步爬虫(利用aiohttp实现)的效率,展示aiohttp在爬虫方面的优势。
同步爬虫
首先,我们先来看看用一般的方法实现的爬虫,即同步方法,完整的Python代码如下:
输出结果如下:
##################################################
使用一般方法,总共耗时:23.522345542907715
##################################################
程序运行了23.5秒,爬取了500本书的信息,效率还是可以的。我们前往目录中查看文件,如下:
异步爬虫
接下来我们看看用aiohttp制作的异步爬虫的效率,完整的源代码如下:
我们可以看到,这个爬虫与原先的一般方法的爬虫的思路和处理方法基本一致,只是在处理HTTP请求时使用了aiohttp模块以及在解析网页时函数变成了协程(coroutine),再利用aysncio进行并发处理,这样无疑能够提升爬虫的效率。它的运行结果如下:
##################################################
使用aiohttp,总共耗时:2.405137538909912
##################################################
2.4秒,如此神奇!!!再来看看文件的内容:
总结
综上可以看出,利用同步方法和异步方法制作的爬虫的效率相差很大,因此,我们在实际制作爬虫的过程中,也不妨可以考虑异步爬虫,多多利用异步模块,如aysncio, aiohttp。另外,aiohttp只支持3.5.3以后的Python版本。
写到这里,喜欢要记得关注我,欢迎在下面评论留言
这篇关于Python中利用aiohttp制作异步爬虫及简单应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!