Python批量下载连续命名图片需求及代码优化咨询
批量下载连续命名图片的Python脚本优化
需求
- 下载具有连续命名的图片
- 支持自定义链接格式,适配同结构的任意网站
- 可指定需下载的图片数量
- 兼容
.png和.jpg格式
初始问题
作为编程新手,我最初写了一段Python requests代码,用40个变量(20个处理png、20个处理jpg)来支持下载20张图片,但要下载60张就得新增到120个变量,扩展性极差。希望能写出无需新增变量、支持任意数量图片下载的代码。
链接示例:www.website.com/path/1.pngwww.website.com/path/2.pngwww.website.com/path/3.jpgwww.website.com/path/4.png
最初的代码
import requests import shutil for i in list(range(1,92)): link = input("insert link:") name = str(i)+".jpg" r = requests.get(link+name, stream=True) if r.status_code == 200: with open(link+name+".png", 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f)
优化后的代码
import requests import shutil linkFormat = input("请输入不含/1.png但包含{num}的链接格式:") cap = input("输入分类前缀(用于图片排序):") # 用于图片排序 endRange = int(input("请输入最后一张图片的序号:")) for i in range(1, endRange + 1): # 从1开始,覆盖到最后一张序号 singleLink = linkFormat.format(num = str(i)) # 尝试下载PNG格式 r = requests.get(singleLink + ".png", stream=True) if r.status_code == 200: with open(f"{cap}_{i}.png" , 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f) print(f"已下载:{i}.png") # 尝试下载JPG格式 rj = requests.get(singleLink + ".jpg", stream=True) if rj.status_code == 200: with open(f"{cap}_{i}.jpg", 'wb') as f: rj.raw.decode_content = True shutil.copyfileobj(rj.raw, f) print(f"已下载:{i}.jpg")
内容的提问来源于stack exchange,提问作者aehwatouy
相关产品推荐
相关产品推荐

