从网上看了几篇中文版的教程, 发现不是很全,只翻译了aiohttp客户端的教程,没有把之前的aiohttp 的client 示例翻译进来,直接使用会报错,因此,直接找到官网(查看官网,点击这里),从头开始翻译client的使用教程。本篇主要介绍的是aiohttp客户端的教程
1.相关库的安装
(1)aiohttp 安装
pip install aiohttp
(2)cchartdet 安装
pip install cchardet
(3)aiodns 库安装
pip install aiodns
aiodns库的作用是通关client API来加速dns解析
2.实例演示
(1)client 实例
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)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
3.客户端详细介绍
3.1 使用 get 获取一个网页, 比如http://httpbin.org/get
实例如下:
async with aiohttp.ClientSession() as session:
async with session.get('http://httpbin.org/get') as resp:
print(resp.status)
print(await resp.text())
3.2 使用post 获取网页
session.post('http://httpbin.org/post', data=b'data')
3.3其他的HTTP操作方法
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')
3.4 给url传递参数
params = {'key1': 'value1', 'key2': 'value2'}
async with session.get('http://httpbin.org/get',
params=params) as resp:
expect = 'http://httpbin.org/get?key2=value2&key1=value1'
assert str(resp.url) == expect
除了上面的字典的方式外,你也可以使用list 里包含2个tuple的方式,如下:
params = [('key', 'value1'), ('key', 'value2')]
async with session.get('http://httpbin.org/get',
params=params) as r:
expect == 'http://httpbin.org/get?key=value2&key=value1'
assert str(r.url) == expect
还可以使用str 的方式,如下:
async with session.get('http://httpbin.org/get',
params='key=value+1') as r:
assert str(r.url) == 'http://httpbin.org/get?key=value+1'
但要注意其中的“+”没有被编码
余下的内容请参考: