使用curl下载文件中列出的URL?[关闭]


15

我有一个包含所有需要下载的URL的文件。但是我需要一次限制一次下载。即,下一次下载应仅在前一个下载完成后才开始。使用curl是否可能?还是我应该使用其他任何东西。


3
您好,欢迎来到serverfault。在此网站上提问时,请始终记住,我们不在您的位置,并且无法猜测您使用的环境。在这种情况下,您没有指定要运行的操作系统,这将使您难以正确回答。
斯蒂芬

Answers:


20
xargs -n 1 curl -O < your_files.txt

2
这是最好的答案。尽管询问者未指定,但是可以安全地假设所有URL的响应都应写入单独的文件中。将-O选项与cURL一起使用即可。 xargs -n 1 curl -O < your_file.txt
LS

我同意。如此编辑。
Grumdrig

这真的是我所需要的。
vu ledang '19

19

wget(1) 默认情况下可以正常工作,并且内置了此选项:

   -i file
   --input-file=file
       Read URLs from a local or external file.  If - is specified as file, URLs are read from the standard input.  (Use ./- to read from a file literally named -.)

       If this function is used, no URLs need be present on the command line.  If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved.  If
       --force-html is not specified, then file should consist of a series of URLs, one per line.

       However, if you specify --force-html, the document will be regarded as html.  In that case you may have problems with relative links, which you can solve either by adding "<base href="url">" to the documents
       or by specifying --base=url on the command line.

       If the file is an external one, the document will be automatically treated as html if the Content-Type matches text/html.  Furthermore, the file's location will be implicitly used as base href if none was
       specified.

3
由于要求者知道如何使用cURL进行此操作,因此您至少应包括尝试使用它的解决方案。
LS

4

可以在shell脚本中使用curl进行类似的操作,但是您需要自己研究curl的适当选项

while read URL
    curl some options $URL
    if required check exit status 
          take appropriate action
done <fileontainingurls

2
我知道这是一半的伪代码,但我认为while循环中仍然应该有一个“ do”。
nwk

1
@nwk完全是伪代码,我不同意。
user9517

如果URL包含“&”号怎么办?他们会逃脱吗?在不进行转义的情况下,shell会认为该命令应在后台运行。
贾格尔2014年

2

基于@iain答案,但使用正确的shell脚本-

while read url; do
  echo "== $url =="
  curl -sL -O "$url"
done < list_of_urls.txt

也可以与&符号等奇怪的字符一起使用...

可以将替换-O为重定向到文件中,或使用其他合适的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.