【问题标题】:How to `wget` a list of URLs in a text file?如何`wget`文本文件中的URL列表?
【发布时间】:2017-04-20 13:25:42
【问题描述】:

假设我在一个位置有一个包含数百个 URL 的文本文件,例如

http://url/file_to_download1.gz
http://url/file_to_download2.gz
http://url/file_to_download3.gz
http://url/file_to_download4.gz
http://url/file_to_download5.gz
....

使用wget 下载这些文件的正确方法是什么?我怀疑有像wget -flag -flag text_file.txt这样的命令

【问题讨论】:

  • 有人在 Nationalmap.gov 上尝试获取美国地图后来到这里吗?
  • 除了 wget -i,您还需要添加一些开关,这样您就不会因为敲打它们而被禁止进入服务器!因此,如果它不能下载一个它不会继续尝试太久-w and -t and -T 可能会感兴趣

标签: text wget


【解决方案1】:

与

并行运行
cat text_file.txt | parallel --gnu "wget {}"

【讨论】:

    【解决方案2】:

    如果您使用的是 OpenWrt 或使用不提供-i 选项的旧版 wget:

    #!/bin/bash
    input="text_file.txt"
    while IFS= read -r line
    do
      wget $line
    done < "$input"
    

    此外,如果您没有wget,您可以使用curl 或您用于下载单个文件的任何东西。

    【讨论】:

      【解决方案3】:

      如果您还想保留原始文件名,请尝试:

      wget --content-disposition --trust-server-names -i list_of_urls.txt
      

      【讨论】:

        【解决方案4】:

        Quick man wget 给了我以下信息:

        [..]

        -i 文件

        --input-file=文件

        从本地或外部文件读取 URL。如果 - 指定为文件,则从标准输入中读取 URL。 (使用 ./- 从字面上命名为 - 的文件中读取。)

        如果使用此函数,则命令行中不需要出现 URL。如果命令行和输入文件中都有 URL,则命令行上的 URL 将是第一个被检索的 URL。如果未指定 --force-html,则文件应包含一系列 URL,每行一个。

        [..]

        所以:wget -i text_file.txt

        【讨论】:

        • 有没有办法控制并发作业的数量?
        • 查看@Yusef的以下答案:cat text_file.txt | parallel --gnu "wget {}"
        【解决方案5】:

        尝试:

        wget -i text_file.txt
        

        (检查 man wget)

        【讨论】:

          猜你喜欢
          • 2014-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多