【问题标题】:Python wget download multiple files at oncePython wget一次下载多个文件
【发布时间】:2019-01-30 17:27:33
【问题描述】:

寻找一次下载多个文件的干净的 Python Wget 解决方案。

网址将始终相同:

https://example.com/

到目前为止,我可以做到这一点:

import wget

print('Beginning file download with wget module')
url = 'https://example.com/new_folder/1.jpg'
wget.download(url)

但我还需要下载 -2.jpg、-3.jpg、-4.jpg、-5.jpg 并将 NWZV1WB 重命名为 NEWCODE-1.jpg、NEWCODE -2.jpg...


我还需要下载文件夹中的所有 content(22).jpg 文件并将本地文件夹重命名为 NEWCODE 之类的名称,但保留文件的原始名称

这里的网址也总是一样的:

import wget

print('Beginning file download with wget module')
url = 'https://example.com/big/1.jpg' #there's 18 jpg inside
wget.download(url)

什么是最好的,wget(找不到很多关于的文章)或请求?任何帮助表示赞赏。

【问题讨论】:

    标签: python download directory wget


    【解决方案1】:

    例如:

    import wget
    import os
    import multiprocessing
    
    def run_process(url, output_path):
        wget.download(url, out=output_path)
        # TODO: you can write your rename logic at here using os.rename
    
    
    if __name__ == '__main__':
        cpus = multiprocessing.cpu_count()
        max_pool_size = 4
        pool = multiprocessing.Pool(cpus if cpus < max_pool_size else max_pool_size)
        base_dir = os.path.dirname(os.path.abspath(__file__))
        target = "NEWCODE"
        prefix_list = ["NWZV1WB", "AWU3JAD", "NW96MRD"]
        download_list = []
        name_list = list(range(1, 23))
        name_list.extend(["zoom_side", "zoom_sole", "zoom_side-thumb"])
        for prefix in prefix_list:
            path = os.path.join(base_dir, prefix)
            if not os.path.exists(path):
                os.mkdir(path)
            if not os.path.isdir(path):
                exit()
            for name in name_list:
                download_list.append(['https://img2.tennis-warehouse.com/360/{p}/{n}.jpg'.format(n=name, p=prefix), path])
    
        for url, path in download_list: # change here to download other files
            print('Beginning file download with wget module {n}'.format(n=url))
            pool.apply_async(run_process, args=(url, path, ))
        # add your code here to download other files
        pool.close()
        pool.join()
        print("finish")
    

    【讨论】:

    • 不错的一个!快速提问,为什么文件不在 NEWCODE 文件夹中?此外,/360/NWZV1WB/ 文件夹内还有 4 个其他文件...它们的名称始终为 zoom_side.jpg、zoom_sole.jpg、zoom_side-thumb.jpg、zoom_sole-thumb.jpg 需要下载 :( 最后一个问题,我如何处理多个产品?假设我要下载 NWZV1WB 和 AWU3JAD 和 NW96MRD?感谢亨利!
    • 我在here 阅读了 wget python 代码,但我似乎忘记发送 output_file。这是第一个问题。
    • 至于第二个问题,这只是一个例子,你可以简单地改变for的逻辑,或者直接做一个list,里面包含你想要的url并遍历它。
    • 只是在pool.close()之前给pool.apply_async(run_process, args=(url, path, ))提供不同的url
    • 第一个问题完美运行,似乎更快一点!好的 !第二和第三个问题...我迷路了...老实说...如果您能更新代码将不胜感激:(我是新手
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2019-10-08
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多