首先对库进行安装:
pip install aiohttp[speedups]
pip install requests
一、Requests库
Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。
import requests
r = requests.get('https://api.github.com/events')
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
现在,我们有一个名为r的
content响应的内容,以字节为单位。
cookies服务器发送回的Cookie的CookieJar。
encoding访问r.text时进行编码以进行解码。
headers不区分大小写的响应标题字典。例如,headers['content-encoding']将返回'Content-Encoding'响应头的值。
history
status_code响应的HTTP状态的整数代码,例如404或200。
text响应的内容,以unicode表示。
url响应的最终URL位置。
请求会话:(提供cookie持久性,连接池和配置)
基础用法:
import requests
s = requests.Session()
s.get('http://httpbin.org/get') #
或作为上下文管理器:
with requests.Session() as s:
s.get('http://httpbin.org/get') #
二、AIOHTTP
用于asyncio和Python的异步HTTP客户端/服务器。
主要功能:
客户示例:
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
html = await fetch(session, 'http://python.org')
print(html)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
服务器示例:
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/{name}', handle)])
if __name__ == '__main__':
web.run_app(app)
发送请求:
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get('http://httpbin.org/get') as resp:
print(resp.status)
print(await resp.text())
#同样有以下几种请求
session.post('http://httpbin.org/post', data=b'data')
session.put('http://httpbin.org/put', data=b'data')
session.delete('http://httpbin.org/delete')
session.head('http://httpbin.org/get')
session.options('http://httpbin.org/get')
session.patch('http://httpbin.org/patch', data=b'data')
三、Requests与AIOhttp对比
在发送请求上,Requests为同步库,而AIOHttp为异步库
具体的效率对比可参考:aiohttp与requests效率对比www.jianshu.com
AIOhttp是AIO家族非常出色的一个库,AIO异步家族发展非常迅猛,近年来又支持了异步HTTP客户端/服务器,发展前途一片光明。