初识aiohttp

2022-09-20 19:16:56 浏览数 (1)

上一篇写到了异步爬虫的操作,但是由于requests模块是同步模块会中止异步操作,所以这里要引入aiohttp。

首先是要在终端内输入

pip install aiohttp

接着就是导包,这些是这次要用到的包

代码语言:javascript复制
import asyncio
import time
import aiohttp

接下来的操作和之前的模拟异步操作没什么区别,唯一不同的地方就是在发请求的地方。

代码语言:javascript复制
import asyncio
import time
import aiohttp


print(time.strftime("%X"))
urls = [
    "http://127.0.0.1:5000/bobo", "http://127.0.0.1:5000/coco", "http://127.0.0.1:5000/moly"
]

async def get_page(url):
    async with aiohttp.ClientSession() as session:
        #参数:(url,headers,params/data,proxy="字符串") post请求同理
        async with await session.get(url) as response:
            # text()返回字符串形式的响应数据
            # read()返回二进制形式的响应数据
            # json()返回的是JSON形式的响应数据
            # 注意:在获取响应数据之前一定要使用await手动挂起
            page_text = await response.text()
            print(page_text)

    print(url, "下载完成")

tasks = []
for url in urls:
    task = get_page(url)
    tasks.append(task)

async def main():
    await asyncio.wait(tasks)

if __name__ == '__main__':
    asyncio.run(main())
    print(time.strftime("%X"))

运行结果:

总共耗时2秒。

0 人点赞