aiohttp的使用

aiohttp

介绍

  • aiohttp 强调的是异步并发。提供了对asyncio/await的支持,可以实现单线程并发IO操作。

安装

pip install aiohttp

使用方法

1. 普通发请求

import aiohttp  
  import asyncio  
    
    
  async def fetch():  
      async with aiohttp.ClientSession() as session:  
          async with session.get('https://www.csdn.net/') as response:  
              print(await response.text())  
    
    
  loop = asyncio.get_event_loop()  
  tasks = [fetch(), ]  
  loop.run_until_complete(asyncio.wait(tasks))

2. 添加请求参数

import aiohttp
import asyncio

params = {'name': 'zhangsan', 'age': 10}


async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://www.baidu.com/s', params=params) as response:
            print(response.url)


loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))
  • 代码运行结果:
    在这里插入图片描述

3. 请求头中自定义User-Agent

import aiohttp
import asyncio

headers = {
            "User-Agent": "my-user-agent"
        }


async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.get('http://httpbin.org/user-agent', headers=headers) as response:
            print(await response.text())


loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))
  • 代码运行结果:
    在这里插入图片描述

4. 请求头中自定义cookies

import aiohttp  
import asyncio  
  
url = 'http://httpbin.org/cookies'  
cookies = {'cookies_name': 'test_cookies'}  
  
  
async def fetch():  
    async with aiohttp.ClientSession() as session:  
        async with session.get(url, cookies=cookies) as response:  
            print(await response.text())  
  
  
loop = asyncio.get_event_loop()  
tasks = [fetch(), ]  
loop.run_until_complete(asyncio.wait(tasks))

5. post字符串

url = 'http://httpbin.org'
payload = {'username': 'zhang', 'password': '123456'}
async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.post(url, data=payload) as response:
            print(await response.text())

loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))

6. post文件

url = 'http://httpbin.org'
files = {'file': open('test.txt', 'rb')}
async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.post(url, data=files) as response:
            print(await response.text())

loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))

7. 设置代理

url = "http://python.org"
async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.get(url, proxy="http://some.proxy.com") as response:
        print(response.status)

loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))

8. 设置认证代理

url = "http://python.org"
async def fetch():
    async with aiohttp.ClientSession() as session:
        proxy_auth = aiohttp.BasicAuth('user', 'pass')
        async with session.get(url, proxy="http://some.proxy.com", proxy_auth=proxy_auth) as response:
            print(response.status)

loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))

# 下面的方法也可以
url = "http://python.org"
async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.get(url, proxy="http://user:pass@some.proxy.com") as response:
            print(response.status)

loop = asyncio.get_event_loop()
tasks = [fetch(), ]
loop.run_until_complete(asyncio.wait(tasks))
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
aiohttp 是一个基于 asyncio 的异步 HTTP 客户端/服务器框架。它提供了异步 HTTP 请求、响应、WebSocket 和静态文件服务等功能。 以下是 aiohttp使用教程: 1. 安装 aiohttp: 可以通过 pip 安装 aiohttp: ``` pip install aiohttp ``` 2. 发送 HTTP 请求: aiohttp 提供了 `ClientSession` 类,可以用来发送 HTTP 请求。 ```python import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: async with session.get('https://www.baidu.com') as response: print(await response.text()) asyncio.run(main()) ``` 在上面的例子中,我们创建了一个 `ClientSession` 对象,并使用 `get` 方法发送了一个 GET 请求。最后,我们打印出了响应的内容。 3. 发送 POST 请求: 我们可以使用 `post` 方法发送 POST 请求: ```python import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: async with session.post('https://httpbin.org/post', data={'key': 'value'}) as response: print(await response.text()) asyncio.run(main()) ``` 在上面的例子中,我们使用 `post` 方法发送了一个 POST 请求,请求的数据是一个字典。 4. WebSocket 客户端: aiohttp 还提供了 WebSocket 客户端功能。我们可以使用 `ClientSession.websocket` 方法创建一个 WebSocket 客户端: ```python import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: async with session.ws_connect('wss://echo.websocket.org') as ws: await ws.send_str('Hello, WebSocket!') async for msg in ws: if msg.type == aiohttp.WSMsgType.TEXT: print(msg.data) elif msg.type == aiohttp.WSMsgType.ERROR: break asyncio.run(main()) ``` 在上面的例子中,我们使用 `ws_connect` 方法创建了一个 WebSocket 客户端,并发送了一条字符串。同时,我们使用异步 for 循环接收服务器返回的消息。 5. 静态文件服务: aiohttp 还可以用来提供静态文件服务。我们可以使用 `aiohttp.web.StaticFiles` 类创建一个静态文件服务: ```python from aiohttp import web app = web.Application() app.add_routes([web.static('/', '/path/to/static/files')]) web.run_app(app) ``` 在上面的代码中,我们创建了一个 `web.Application` 对象,并使用 `add_routes` 方法添加了一个静态文件服务。其中,第一个参数是 URL 前缀,第二个参数是文件系统中静态文件的路径。 以上就是 aiohttp使用教程。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值