在Python 3.5中使用aiohttp获取多个URL

时间:2016-03-08 23:01:43

标签: python python-3.x web-scraping python-asyncio aiohttp

自Python 3.5引入'str_aaa_2012-0000.txt' 'http://weburl.com' 'SHA256' 'hashdata' 'str_aaa_2012-0001.txt' 'http://weburl.com' 'SHA256' 'hashdata' 'str_aaa_2012-0002.txt' 'http://weburl.com' 'SHA256' 'hashdata' 'str_aaa_2012-0003.txt' 'http://weburl.com' 'SHA256' 'hashdata' 'str_aaa_2012-0004.txt' 'http://weburl.com' 'SHA256' 'hashdata' 以来,docs aiohttp中建议的语法已发生变化。现在,为了得到一个网址,他们建议:

async with

如何修改此内容以获取网址集合而不仅仅是一个网址?

在旧import aiohttp import asyncio async def fetch(session, url): with aiohttp.Timeout(10): async with session.get(url) as response: return await response.text() if __name__ == '__main__': loop = asyncio.get_event_loop() with aiohttp.ClientSession(loop=loop) as session: html = loop.run_until_complete( fetch(session, 'http://python.org')) print(html) 示例中,您将设置一个任务列表,例如

asyncio

我尝试将这样的列表与上面的方法结合起来但失败了。

1 个答案:

答案 0 :(得分:19)

对于并行执行,您需要asyncio.Task

我已将您的示例转换为从多个来源获取并发数据:

Number 3
Orginal index 1
Number 4
Orginal index 3
Number 5
Orginal index 2
Number 7
Orginal index 0