python爬虫 - 异步多任务
异步爬虫批量下载图片,文件下载链接已失效,不要直接运行
# 异步批量下载
import aiohttp
import asyncio
import time
async def job(session, url):
# 声明为异步函数
name = url.split('/')[-1]
# 获得名字
img = await session.get(url)
# 触发到await就切换,等待get到数据
imgcode = await img.read()
# 读取内容
with open("tmp/"+str(name), 'wb') as f:
f.write(imgcode)
return str(url)
async def main(loop, urls):
async with aiohttp.ClientSession() as session:
# 建立会话session
tasks = [loop.create_task(job(session, url)) for url in urls]
# 建立所有任务
finished, unfinished = await asyncio.wait(tasks)
# 触发await,等待任务完成
all_results = [r.result() for r in finished]
# 获取所有结果
print("ALL RESULT:"+str(all_results))
urls = ['https://pythondict.com/wp-content/uploads/2019/07/2019073115192114.jpg',
'https://pythondict.com/wp-content/uploads/2019/07/2019080216113098.jpg']
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop, urls))
loop.close()
参考资料:
浙公网安备 33010602011771号