查看: 37|回复: 0

批量下载图片脚本

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 打卡月天数:6
  • 打卡总奖励:157
  • 最近打卡:2024-11-20 10:22:49

23

主题

1

回帖

40万

积分

管理员

BSAY论坛创始人

积分
400190
QQ
发表于 2024-10-31 10:35:15 | 显示全部楼层 |阅读模式
  1. import os
  2. import requests
  3. from concurrent.futures import ThreadPoolExecutor, as_completed

  4. # 壁纸文件夹路径
  5. wallpaper_folder = r"E:\download\testimg"
  6. os.makedirs(wallpaper_folder, exist_ok=True)

  7. # 失败图片链接存储文件路径
  8. failed_urls_file = r"E:\download\testimg\shibai.txt"

  9. # 读取img.txt文件中的图片链接
  10. with open(r"E:\download\testimg\img.txt", "r") as file:
  11.     image_urls = file.readlines()

  12. def download_image(url):
  13.     url = url.strip()  # 去除首尾空白字符
  14.     try:
  15.         response = requests.get(url, timeout=120)
  16.         response.raise_for_status()
  17.         # 提取图片文件名
  18.         filename = os.path.basename(url)
  19.         # 保存图片至壁纸文件夹
  20.         with open(os.path.join(wallpaper_folder, filename), "wb") as img_file:
  21.             img_file.write(response.content)
  22.         print(f"已下载图片: {filename}")
  23.     except requests.exceptions.RequestException as e:
  24.         print(f"图片下载失败: {e}")
  25.         with open(failed_urls_file, "a") as failed_urls:
  26.             failed_urls.write(url + "\n")

  27. # 清空失败图片链接文件
  28. open(failed_urls_file, "w").close()

  29. # 批量下载图片(多线程异步)
  30. with ThreadPoolExecutor() as executor:
  31.     futures = [executor.submit(download_image, url) for url in image_urls]
  32.     for future in as_completed(futures):
  33.         try:
  34.             future.result()
  35.         except Exception as e:
  36.             print(f"图片下载失败: {e}")

  37. print("图片下载完成!")
复制代码
  • 壁纸文件夹路径(下载后,文件的存放路径)
  • 失败图片链接存储文件路径
  • 读取img.txt文件中的图片链接(文件链接,一行一个)
  • 以上都弄好了,直接执行 python batchImg.py 即可

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表