我要抓取的网址列表非常多。起初,我正在考虑做这样的事情:
async def main(username, password): sem = asyncio.Semaphore(100) async with aiohttp.ClientSession() as session: await login(session, username, password) tasks = [asyncio.create_task(r_search(sem, session, url)) for url in hugenumberofurls] texts = await asyncio.gather(*tasks)
但是,当然要花很长时间,我想实时处理结果(解析+写入文件)。实现这个目标的最有效方法是什么?
我是否应该分割大量的URL,然后执行:
async def main(username, password): async with aiohttp.ClientSession() as session: await login(session, username, password) sem = asyncio.Semaphore(100) for chunk in chunk(hugenumberofurls): tasks = [asyncio.create_task(r_search(sem, session, url)) for url in chunk] texts = await asyncio.gather(*tasks) process(texts)
[我相信这可能会浪费时间,因为process()可能需要几分钟才能用于继续下载网址...
我很乐意接受任何建议,对于新手来说asyncio和aiohttp很难!
我要抓取的网址列表非常多。起初,我正在考虑执行以下操作:async def main(用户名,密码):sem = asyncio.Semaphore(100)与...
让我们使用两个模拟操作构建一个工作示例: