怎样使用aiohttp请求多个url

发布于 2022-09-07 15:57:37 字数 431 浏览 37 评论 0

这是aiohttp官方请求单个url的方式,如果请求多个url并获取内容应该怎么做?

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())

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沙沙粒小 2022-09-14 15:57:37
urls = ['http://baidu.com', 'http://qq.com']
async def get(url):
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, url)
        print(html)
tasks = [get(x) for x in urls]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(*tasks))
前事休说 2022-09-14 15:57:37

import asyncio
import aiohttp
import time

from my_spider import urls

async def async_craw(url):

async with aiohttp.ClientSession() as session:
    async with session.get(url) as resp:
        res = await resp.json()
        print(f'craw_url: {url},', res.get('message'))

超级循环

loop = asyncio.get_event_loop()

tasks = [

loop.create_task(async_craw(url))
for url in urls

]

start_time = time.time()

等待任务完成

loop.run_until_complete(asyncio.wait(tasks))
end_time = time.time()
print(f'耗费时间:{end_time - start_time}')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文