【问题标题】:download multiple url stored in file下载存储在文件中的多个 url
【发布时间】:2015-03-23 08:28:32
【问题描述】:

我有一个包含所有图片 url 的 txt 文件。 每个网址都换行。

我想下载所有的网址。我在网上搜索并发现带有-i 选项的wget 命令很有用,但我无法区分每个链接是打开连接然后下载还是只打开一个连接并且所有文件都是已下载。

我想问的要点是,我需要一个工具/程序/任何可以超快下载所有这些图像的工具/程序/任何东西。

txt 文件有数以百万计的图片链接,所以当我尝试uget tool 时它比较慢,而且它也无法加载所有图片。那么建议一些快速下载的方法?

【问题讨论】:

    标签: linux performance


    【解决方案1】:

    您需要的是并行性。如果单个线程不能足够快地下载文件,则需要多个线程。尽管限制因素可能是您的 Internet 连接带宽,但在这种情况下没有任何帮助。

    您是否想过手动将文件拆分为十个或一百个片段,然后使用十个或一百个uget 进程从每个文件中下载 URL?这将是一种为下载过程添加并行性的简单技巧。

    当然,您可以使用例如Python 或 Java 开发一个软件,为您启动多个线程并处理 URL,但是您需要熟悉线程编程,在任何一种情况下,将文件拆分为多个并启动多个 uget 进程可能更简单,因为开发软件需要很多时间,以后使用该软件可能无法节省时间。

    服务器是你控制的吗?一台还是多台服务器?如果所有图像都在一台服务器上并且不受您控制,我会考虑不要在服务器上放置太多负载。

    我之前也遇到过同样的问题,在那种情况下,我使用 Java 代码来下载图像,并且只有一个线程。此外,我在下载图像之间故意放置了睡眠调用,以免过多地加载服务器。所以,我不想要表现;我不想在服务器上增加太多负载。那样的话,只有一台服务器,不是我控制的。

    【讨论】:

    • Excellet anwer,但我只是没有一个文件,我有许多包含数百万个链接的文件,因此破坏是不可行的,其次它不能回答每个请求单独处理或仅由单连接(例如,使用一个线程)
    • 文件是什么格式的?每个 URL 一行?如果你有例如5个文件并想在3个线程中下载,您可以尝试将它们连接在一起: cat file1.txt file2.txt file3.txt file4.txt file5.txt > fileall.txt 然后将fileall.txt拆分回filenew1.txt,filenew2 .txt 和 filenew3.txt,然后将 uget 与 filenew1.txt、filenew2.txt 和 filenew3.txt 一起使用
    • 我不知道 uget 是使用每个进程一个连接还是每个请求一个连接来下载文件,但是如果您想要性能,由于使用多个执行线程,您无论如何都需要多个连接。无论如何,如果你想快速下载文件,最好选择一个快速提出的解决方案,而不是在选择之前无休止地分析解决方案的属性。
    【解决方案2】:

    你也可以做一个 for 循环。 如果存储 url 的文件名为 urlfile.txt,则可以执行

    # for in i `cat urlfile.txt` ; do ; wget -i $i ; done
    

    【讨论】:

    • 我已经做了类似的事情,但问题是每次 wget 超出范围时都会创建新连接并且之前的连接会被终止,这会很慢吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 2018-08-09
    • 2016-06-23
    • 2019-06-09
    • 2020-05-29
    • 2021-03-21
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多