【问题标题】:How do I bulk download images (70k) from urls with a restriction on the simultaneous downloads?如何从限制同时下载的 url 批量下载图像 (70k)?
【发布时间】:2019-08-04 13:31:10
【问题描述】:

我有点不知所措。我有一个包含这些列的 csv 文件:名称 - 图片 url 我想将 70k 图像批量下载到一个文件夹中,用第一列中的名称重命名图像,如果每个名称有多个,则为它们编号。 有些是jpeg,有些是png。

我猜我需要使用 pandas 从 csv 获取数据,但我不知道如何在不同时开始所有下载的情况下进行下载/重命名部分,这肯定会使我的电脑崩溃(确实如此,我什至没有生气)。 提前感谢您对此提供的任何启发。

【问题讨论】:

  • CSV 的几行示例可能会有所帮助。就像知道你使用什么操作系统一样。

标签: python image url download bulk


【解决方案1】:

尝试分批下载,比如 500 张图片……然后休眠 1 秒并循环播放……相当耗时……但肯定是火法……对于编码参考,您可以探索 urllib 之类的包(用于下载)并且一旦您下载文件,请使用 os.rename() 更改名称....您已经知道该 csv 文件使用 pandas...

【讨论】:

    【解决方案2】:

    我是个编码白痴。 . .所以把这个和一小撮盐一起吃。

    我需要在(第 1 列带有 URL,第 2 列带有文件名)中获取 CSV,并将其放在代码运行目录中的现有文件夹中。

    对我来说就像一个魅力。也许这里有帮助

    #import Libraries
    import csv
    import urllib.request
    
    # Function to download file from URL to a SPECIFIED FOLDER with a SPECIFIED NAME
    def dl_jpg(url, file_path, file_name):  
      full_path = file_path + file_name + '.jpg' 
      urllib.request.urlretrieve(url, full_path)
    
    # Get CSV File-name and Folder to store images from the user
    file_name = input('Please enter filename:  ')
    folder_name = input('Please enter a folder name:  ')
    
    # Open SPECIFIED CSV and iterate through the URL on each line and call the Download function for each Line and filename.
    with open(file_name + '.csv','r') as csv_file:  
        csv_reader = csv.reader(csv_file)
        next(csv_reader)
        for line in csv_reader:  
          print(line[0])
          dl_jpg(line[0],folder_name +'/', line[1])
    

    【讨论】:

    • 欢迎来到 StackOverFlow @Cubic。您的解决方案可能会有所帮助,但您需要清楚地解释它是如何解决问题的。这里的问题是“如何按顺序执行下载,而不是并行执行”。如果您的解决方案能做到这一点,那很好,但您需要解释一下。如果没有,那么你就没有回答这个问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 2019-12-24
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多