实战1:下载三张图片(IO)
1.1普通下载【同步下载】
#下载3张照片(网络IO)
#普通方式
import requests
def download_image(url):
print("开始下载:",url)
#发送网络请求,下载图片
response = requests.get(url)
print("下载完成")
#图片保存到本地文件
file_name = url.rsplit(',')[-1]
with open(file_name,'wb') as fp:
fp.write(response.content)
if __name__ == "__main__":
url_list = [
'https://t7.baidu.com/it/u=3676218341,3686214618&fm=193&f=GIF',
'https://t7.baidu.com/it/u=3930750564,2979238085&fm=193&f=GIF',
'https://t7.baidu.com/it/u=3522949495,3570538969&fm=193&f=GIF'
]
for item in url_list:
download_image(item)
1.2 协程下载【异步下载】
# 协程下载3张图片
# 协程,又称异步
import aiohttp
import asyncio
async def fetch(session,url):
print("发送请求",url)
async with session.get(url,verify_ssl=False) as response:
content = await response.content.read()
file_name = url.rsplit(',')[-1]
with open(file_name,'wb') as fp:
fp.write(content)
print('下载完成',url)
async def main():
async with aiohttp.ClientSession() as session:
url_list = [
'https://t7.baidu.com/it/u=3676218341,3686214618&fm=193&f=GIF',
'https://t7.baidu.com/it/u=3930750564,2979238085&fm=193&f=GIF',
'https://t7.baidu.com/it/u=3522949495,3570538969&fm=193&f=GIF'
]
tasks = [asyncio.create_task(fetch(session,url)) for url in url_list]
await asyncio.wait(tasks)
if __name__ == "__main__":
asyncio.run(main())