You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python批量下载连续命名图片需求及代码优化咨询

批量下载连续命名图片的Python脚本优化

需求

  • 下载具有连续命名的图片
  • 支持自定义链接格式,适配同结构的任意网站
  • 可指定需下载的图片数量
  • 兼容.png和.jpg格式

初始问题

作为编程新手,我最初写了一段Python requests代码,用40个变量(20个处理png、20个处理jpg)来支持下载20张图片,但要下载60张就得新增到120个变量,扩展性极差。希望能写出无需新增变量、支持任意数量图片下载的代码。

链接示例:
www.website.com/path/1.png
www.website.com/path/2.png
www.website.com/path/3.jpg
www.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:24:17