多线程批量下载图片
"""
download函数获取请求
done 下获取的请求写入到本地
使用线程池
"""
点击查看代码
import os
import requests
from concurrent.futures import ThreadPoolExecutor
def download(image_url):
res = requests.get(
url=image_url,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
)
return res
def outer(filename): # 闭包
def save(respons): # 将download返回值封装成respons ,利用respons.result() 获取值
res = respons.result()
if not os.path.exists("images"):
os.makedirs("images")
filepath = os.path.join("images", filename)
with open(filepath, mode='wb') as image_object:
image_object.write(res.content)
return save
pool = ThreadPoolExecutor(10)
with open('mv.csv', mode='r', encoding='utf-8') as file_object:
f = file_object.readlines()
for line in f:
# print(line.strip().split(','))
num, filename, url = line.strip().split(',') # 注意使用strip()去除每行的换行符,否则请求会出现404错误。
filename = "{}.png".format(filename)
print(url)
fur = pool.submit(download, url)
fur.add_done_callback(outer(filename))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~