之前介绍的Requests库是一个阻塞式HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费资源。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。
aiohttp就是这样一个提供异步Web服务的库,从Python 3.5版本开始,Python中加入了async
/await
关键字,使得回调的写法更加直观和人性化。aiohttp的异步操作借助于async
/await
关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率,下面我们来看一下这个库的安装方法。
1. 相关链接
- 官方文档:http://aiohttp.readthedocs.io/en/stable
- GitHub:https://github.com/aio-libs/aiohttp
- PyPI:https://pypi.python.org/pypi/aiohttp
2. pip安装
这里推荐使用pip安装,命令如下:
1
|
pip3 install aiohttp
|
另外,官方还推荐安装如下两个库:一个是字符编码检测库cchardet,另一个是加速DNS的解析库aiodns。安装命令如下:
1
|
pip3 install cchardet aiodns
|
3. 测试安装
安装完成之后,可以在Python命令行下测试:
1
2
|
$ python3
>>> import aiohttp
|
如果没有错误报出,则证明库已经安装好了。
4. 结语
我们会在后面的实例中用到这个库,比如维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大地提升效率。