Python下载不同URL对应图片输出全部重复 保存被覆盖如何修复
问题修复方案
故障原因
代码使用了嵌套双层循环,运行逻辑为每遍历到一个url,就会把words列表对应的3个存储路径全部重写一遍。当循环执行到最后一个url时,会把之前所有路径下保存的图片全部替换为最后一个url的资源,最终得到的3张图片内容完全一致。
修复代码(需求为3个url对应3张独立命名图片)
import praw import urllib.request from bs4 import BeautifulSoup import requests import random urls = ['https://media.sproutsocial.com/uploads/2017/02/10x-featured-social-media-image-size.png' , 'https://blog.uniquez.co/wp-content/uploads/2020/11/%D9%85%D9%82%D8%A7%D8%B5%D8%A7%D8%AA-%D8%B5%D9%88%D8%B1-%D9%85%D9%88%D8%A7%D9%82%B9-%D8%A7%D9%84%D8%AA%D9%88%D8%A7%D8%B5%D9%84-%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A2.png' , 'https://media.sproutsocial.com/uploads/2017/08/Facebook-Collection-Video-Ads.png'] words = ['fewfewfwe' , 'fesfewfewf' , 'efefwefwefew'] # url与word按顺序一一配对,单循环避免重复覆盖 for url, word in zip(urls, words): path = "image" + word + ".jpg" urllib.request.urlretrieve(url, path)
修改后每个url只会对应唯一的存储路径,不会出现覆盖问题,最终可得到3张与url一一对应的独立图片。
可选方案(需求为每个url生成3张不同命名的副本,共9张无覆盖图片)
import praw import urllib.request from bs4 import BeautifulSoup import requests import random urls = ['https://media.sproutsocial.com/uploads/2017/02/10x-featured-social-media-image-size.png' , 'https://blog.uniquez.co/wp-content/uploads/2020/11/%D9%85%D9%82%D8%A7%D8%B5%D8%A7%D8%AA-%D8%B5%D9%88%D8%B1-%D9%85%D9%88%D8%A7%D9%82%B9-%D8%A7%D9%84%D8%AA%D9%88%D8%A7%D8%B5%D9%84-%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A2.png' , 'https://media.sproutsocial.com/uploads/2017/08/Facebook-Collection-Video-Ads.png'] words = ['fewfewfwe' , 'fesfewfewf' , 'efefwefwefew'] for url_index, url in enumerate(urls): for word in words: # 路径新增url序号标识,避免同命名路径覆盖 path = f"image_{url_index}_{word}.jpg" urllib.request.urlretrieve(url, path)
内容的提问来源于stack exchange,提问作者M7MD
相关产品推荐
相关产品推荐

