从命令行下载.zip文件

时间:2014-02-14 00:18:34

标签: curl download zip

我有点盲目地尝试curlwget的许多变体来尝试下载一些.zip文件。我尝试的第一件事是:

curl --klo ".\bhcdata#1.zip" "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=[1-4]"

上面的命令实际上是in the documentation by the Chicago Fed提供的,但它在我的Ubuntu机器上抛出错误消息:curl: option --klo: is unknown

有直接的方法吗?

要明确说明我要做的事情:芝加哥联邦储备银行website允许您输入年份和季度,然后点击“下载数据文件”,它会为您提供.zip文件的相应数据。我想为所有季度做这个,所以我需要一种方法来编写每个季度的命令,以便我可以循环它们。上面示例命令中的[1-4]会在一年内占用所有四个季度,但我可以一次只获得一个季度,并且我也尝试替换1。我尝试过没有各种选项组合,但没有任何工作。

4 个答案:

答案 0 :(得分:7)

在我的机器上,以下命令工作正常:

curl -o ./bhcdata1.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=1"

注意:

  1. 单个破折号而不是双破折号
  2. 我只指定了输出文件 - 没有引号和正斜杠
  3. 我将网址简化为特定的季度
  4. 我完成后在我的目录中找到了一个名为bhcdata1.zip的文件:

    -rw-r--r--   1 floris  floris    1545868 Feb 13 21:05 bhcdata1.zip
    

    你可能会发现你需要-k标志......虽然我不需要在我的机器上。那就是

    curl -ko ./bhcdata1.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=1"
    

    工作得很好......

    BONUS 要获得所有四个季度,您只需将以下行放在脚本中即可。将其另存为downloadAll。使用chmod 755 downloadAll将文件更改为“可执行文件”,然后键入./downloadAll。享受...

    #!/bin/bash
    for i in {1..4}
    do
      curl -ko ./bhcdata$i.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=$i"
    done
    

    结果:

    -rw-r--r--   1 floris  floris    1545868 Feb 13 21:11 bhcdata1.zip
    -rw-r--r--   1 floris  floris    2413876 Feb 13 21:11 bhcdata2.zip
    -rw-r--r--   1 floris  floris    1573810 Feb 13 21:11 bhcdata3.zip
    -rw-r--r--   1 floris  floris    2500525 Feb 13 21:12 bhcdata4.zip
    

    如果你想要多年,做(某些变体)

    #!/bin/bash
    for yr in {2010..2012}
    do
      for qtr in {1..4}
      do
        curl -ko ./bhcdata$yr_$qtr.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=$yr&DQTR=$qtr"
      done
    done
    

答案 1 :(得分:1)

您的网址似乎错误。尝试

wget "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2013&DQTR=1"

你应该能够循环年份和季度

答案 2 :(得分:0)

以下bash脚本是我的最终产品:

#!/bin/bash
for i in {1986..2011}
do
  for j in {1..4}
  do
  curl -ko year${i}month${j}.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=$i&DQTR=$j"
  done
done

答案 3 :(得分:0)

使用

curl file_name_url.zip -O -J -L