从Python中的URL列表异步下载图片可以使用异步编程库asyncio
和aiohttp
来实现。下面是一个完整的示例代码:
import asyncio
import aiohttp
async def download_image(session, url):
async with session.get(url) as response:
if response.status == 200:
filename = url.split("/")[-1]
with open(filename, "wb") as f:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f.write(chunk)
print(f"Downloaded {filename}")
else:
print(f"Failed to download {url}")
async def main():
urls = [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg",
"https://example.com/image3.jpg"
]
async with aiohttp.ClientSession() as session:
tasks = []
for url in urls:
task = asyncio.ensure_future(download_image(session, url))
tasks.append(task)
await asyncio.gather(*tasks)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
在上面的代码中,首先定义了一个download_image
函数,用于下载单个图片。然后,在main
函数中,创建了一个aiohttp
的ClientSession
对象,用于发送HTTP请求。接下来,使用asyncio.ensure_future
将每个下载任务封装成Task
对象,并将它们添加到任务列表中。最后,使用asyncio.gather
来并发执行所有的下载任务。
你可以将需要下载的图片URL添加到urls
列表中,然后运行上述代码即可异步下载图片。下载的图片将保存在当前目录下,并以URL中的文件名命名。
推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理下载的图片文件。你可以通过以下链接了解更多信息:腾讯云对象存储(COS)。
领取专属 10元无门槛券
手把手带您无忧上云